How can I get a list of all users that are in WordPress by their role or capabilities?
For example:
- Display
all subscribers listin WordPress. - Display
all authors listin WordPress. - Display
all editors listin WordPress.
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
There may be some different way to do that, but most proper way to do that is following.
<?php
$args = array(
'role' => 'Your desired role goes here.',
'orderby' => 'user_nicename',
'order' => 'ASC'
);
$users = get_users( $args );
echo '<ul>';
foreach ( $users as $user ) {
echo '<li>' . esc_html( $user->display_name ) . '[' . esc_html( $user->user_email ) . ']</li>';
}
echo '</ul>';
?>
Method 2
Here the simple approach to grouping roles.
$wp_roles = wp_roles();
$result = count_users();
foreach ( $result['avail_roles'] as $role => $count )
{
if ( 0 == $count )
continue; //pass role none
$args = array(
'role' => $role
);
$users = get_users( $args );
$user = array();
for ( $i = 0; $i < $count ; $i++ )
$user[] = esc_html( $users[ $i ]->display_name ); //show display name
//output
echo wp_sprintf( '<h2>%1$s</h2><ul><li>%2$s</li></ul>',
esc_html( $wp_roles->role_names[ $role ] ),
implode( '</li><li>', $user )
);
}
Method 3
When you find users with Ultimate Member Plugin Roles, You have to add “um_” to your role value.
For example, you created the role name “Client” in Ultimate Membership Plugin, then $args would be
$args = array(
'role' => 'um_client',
'orderby' => 'user_nicename',
'order' => 'ASC'
);
Method 4
Expanding on Raja’s answer you could also write a helper function that handles this for you:
<?php
# This goes in functions.php
function get_users_by_role($role, $orderby, $order) {
$args = array(
'role' => $role,
'orderby' => $orderby,
'order' => $order
);
$users = get_users( $args );
return $users;
}
?>
Then to get users by a specific role you can simply do:
<?php $users = get_users_by_role('Your role', 'user_nicename', 'ASC'); ?>
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0