I can successfully get all my WordPress users using the following code:
global $wpdb; $sql = 'SELECT * FROM ' . $wpdb->users; $users = $wpdb->get_results( $sql, 'ARRAY_A' ); However, I need to filter the users with multiple roles (only get "role1" and "role2"). I have tried various methods including the following which does not work:
global $wpdb; $sql = ' SELECT ID, display_name FROM wp_users INNER JOIN wp_usermeta ON ( wp_users.ID = wp_usermeta.user_id ) INNER JOIN wp_usermeta AS mt1 ON ( wp_users.ID = mt1.user_id ) WHERE 1=1 AND ( ( ( ( mt1.meta_key = 'wp_capabilities' AND mt1.meta_value LIKE '%role1%' ) ) AND ( ( ( mt1.meta_key = 'wp_capabilities' AND mt1.meta_value LIKE '%role2%' ) ) ) ) ) ORDER BY user_login ASC '; $users = $wpdb->get_results( $sql, 'ARRAY_A' );