J'ai un code comme celui-ci:
$ query_args = array (); $ query_args ['fields'] = array ('ID', 'display_name'); $ query_args ['role'] = 'abonné'; $ users = get_users ($ query_args); foreach ($ users as $ user) $ users_array [$ user-> ID] = $ user-> display_name;
Je veux obtenir plus de rôles et également inclure contributor
, author
et certains rôles personnalisés que j'ai créés avec le plugin Role Scoper Manager
, par exemple , etc. Des idées sur la façon dont je peux le faire get_users
?
Merci
Vous pouvez également le faire via un seul appel
get_users
ou en utilisant un seulWP_User_Query
en utilisant l'meta_query
argument:Le
meta_query
est tiré de la façon dontWP_User_Query
gère lerole
paramètre, si cela vous intéresse.la source
J'ai réussi à résoudre ce problème en utilisant cette fonction:
Ensuite, dans mon thème, je peux le faire:
la source
Depuis
get_users()
retourne un tableau d'utilisateurs qui correspondent à la chaîne de requête donnée en paramètre. Exécutez simplement laget_users()
requête pour chaque rôle que vous souhaitez séparément et fusionnez les résultats. Vous pouvez ensuite parcourir$users
la même manière que vous auriez autrement.la source
$users = array_merge( get_users( array('role' => 'RoleOne' ,'fields' => 'ID') ), get_users( array('role' => 'RoleTwo' ,'fields' => 'ID') ));
ça et ça a fonctionné un régal. Merci!Le problème avec l'utilisation
array_merge
est que vous ne pouvez pas utiliser la pagination. J'aime vraiment la solution de @Andy Adams, mais si vous recherchez de nombreux rôles, l'utilisation de sa méta-requête entraînera une requête très lente (en interne, elle fait une nouvelleINNER JOIN
pour chaque méta-requête).Ma solution consiste à utiliser une méta-requête d'expression régulière:
Cela génère une requête qui ressemble à quelque chose comme:
la source
Vous pouvez simplement fusionner davantage de résultats de requête utilisateur. Supposons que vous souhaitiez inclure les rôles
Author
et les deuxEditor
. Définissez la requête pour chaque cas, puis utilisez array_merge pour consolider en un seul tableau.la source
Tous les paramètres de la fonction get_users sont facultatifs. Si vous ne spécifiez rien, vous obtiendrez un tableau contenant des objets correspondant à chaque utilisateur du blog actuel, y compris ceux avec des rôles personnalisés.
la source
la source