Je veux obtenir les utilisateurs du rôle universitaire et étudiant. J'ai essayé d'utiliser le code ci-dessous (transmission d'un tableau de rôles, mais tous les utilisateurs sont affichés, donc cela ne fonctionne clairement pas.
$roles=array('academic','student');
$args =array('role'=>$roles);
$users=get_users( $args );
foreach ($users as $user) {
echo '<li>' . $user->user_email . '</li>';
}
Je ne pense pas qu'il soit possible de le faire avec la fonction get_users. D'après ce que Codex implique, vous ne pouvez pas passer de tableaux à l'argument de rôle. Mais il devrait être assez facile de vous écarter de cette limite.
Essaye ça:
function filter_two_roles($user) {
$roles = array('academic','student');
return in_array($user->roles[0], $roles);
}
$users = get_users('fields=all_with_meta');
// Sort by last name
usort($users, create_function('$a, $b', 'if($a->last_name == $b->last_name) { return 0;} return ($a->last_name > $b->last_name) ? 1 : -1;'));
// Iterate through users, filtering out the ones which don't have the roles we want
foreach(array_filter($users, 'filter_two_roles') as $user) {
// Your code
}
Demander aux utilisateurs avec l'argument field = all_with_meta est très puissant et WP semble mapper des index qui ne sont même pas affichés lors de l'exécution d'un print_r sur l'objet utilisateur. C’est pourquoi nous pouvons les trier par prénom ou nom, comme indiqué ci-dessus (j’ai en fait pris le code dans une réponse plus ancienne ).
Tiens nous au courant de comment ça se passe?
parcourez les rôles et fusionnez les résultats ... cela fonctionnera avec un nombre quelconque de rôles.
$roles = array('academic','student');
$users = array();
foreach ($roles as $role) {
$args = array('role'=>$role);
$usersofrole = get_users($args);
$users = array_merge($usersofrole,$users);
}
foreach ($users as $user) {
echo '<li>' . $user->user_email . '</li>';
}