Ich habe einen Code wie diesen:
$ query_args = array (); $ query_args ['fields'] = array ('ID', 'display_name'); $ query_args ['role'] = 'subscriber'; $ users = get_users ($ query_args); foreach ($ users als $ user) $ users_array [$ user-> ID] = $ user-> display_name;
Ich möchte mehr Rollen erhalten und auch einige benutzerdefinierte Rollen einschließen contributor
, die author
ich mit dem Role Scoper-Plugin erstellt habe, z. B. Manager
usw. Haben Sie Ideen, wie ich dies tun kann get_users
?
Vielen Dank
Sie können dies auch über einen einzelnen Aufruf
get_users
oder über einen einzelnen Aufruf tun,WP_User_Query
indem Sie das folgendemeta_query
Argument verwenden:Der
meta_query
aus wie gezogenWP_User_Query
Griffe derrole
Parameter, wenn Sie interessiert sind .quelle
Ich habe es geschafft, dies mit dieser Funktion zu lösen:
Dann kann ich in meinem Thema Folgendes tun:
quelle
Since
get_users()
gibt ein Array von Benutzern zurück, die mit der als Parameter angegebenen Abfragezeichenfolge übereinstimmen. Führenget_users()
Sie einfach die Abfrage für jede gewünschte Rolle separat aus und führen Sie die Ergebnisse zusammen. Sie können dann auf$users
die gleiche Weise durchlaufen, wie Sie es sonst getan hätten.quelle
$users = array_merge( get_users( array('role' => 'RoleOne' ,'fields' => 'ID') ), get_users( array('role' => 'RoleTwo' ,'fields' => 'ID') ));
, und es hat sehr gut funktioniert. Vielen Dank!Das Problem bei der Verwendung
array_merge
ist, dass Sie die Paginierung nicht verwenden können. Ich mag die Lösung von @Andy Adams sehr, aber wenn Sie nach vielen Rollen suchen, führt die Verwendung seiner Meta-Abfrage zu einer sehr langsamen Abfrage (intern führt sie eine neue ausINNER JOIN
für jede Metaabfrage Abfrage durchgeführt).Meine Lösung besteht darin, eine Metaabfrage mit regulären Ausdrücken zu verwenden:
Dies erzeugt eine Abfrage, die ungefähr so aussieht:
quelle
Sie können einfach mehr Benutzerabfrageergebnisse zusammenführen. Angenommen, Sie möchten sowohl
Author
als auchEditor
Rollen einschließen . Definieren Sie die Abfrage für jeden Fall und konsolidieren Sie sie mit array_merge in einem einzigen Array.quelle
Alle Parameter der Funktion get_users sind optional. Wenn Sie nichts angeben, erhalten Sie ein Array, das Objekte enthält, die jedem einzelnen Benutzer des aktuellen Blogs entsprechen, einschließlich solcher mit benutzerdefinierten Rollen.
quelle
quelle