Comment obtenir une liste d'utilisateurs en fonction de leur rôle?

10

Comment puis-je obtenir une liste de tous les utilisateurs qui sont dans WordPress par leur rôle ou leurs capacités?

Par exemple:

  • Afficher all subscribers listdans WordPress.
  • Afficher all authors listdans WordPress.
  • Afficher all editors listdans WordPress.
Raja Usman Mehmood
la source

Réponses:

18

Il peut y avoir une façon différente de le faire, mais la façon la plus appropriée de le faire est la suivante.

<?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>';

?>
Raja Usman Mehmood
la source
3

Voici l'approche simple pour regrouper les rôles.

$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 )
    );
}
Jevuska
la source
2

Lorsque vous trouvez des utilisateurs avec des rôles de plugin de membre ultime, vous devez ajouter "um_" à la valeur de votre rôle. Par exemple, vous avez créé le nom de rôle "Client" dans Ultimate Membership Plugin, puis $ args serait

$args = array(
    'role'    => 'um_client',
    'orderby' => 'user_nicename',
    'order'   => 'ASC'
);
Cristian
la source
0

En développant la réponse de Raja, vous pouvez également écrire une fonction d'aide qui gère cela pour vous:

<?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;
}
?>

Ensuite, pour obtenir des utilisateurs par un rôle spécifique, vous pouvez simplement faire:

<?php $users = get_users_by_role('Your role', 'user_nicename', 'ASC'); ?>
Wikus
la source