Mam taki kod:
$ query_args = array (); $ query_args ['fields'] = array ('ID', 'display_name'); $ query_args ['role'] = 'subscriber'; $ users = get_users ($ query_args); foreach ($ users as $ user) $ users_array [$ user-> ID] = $ user-> display_name;
Chcę uzyskać więcej ról i to także contributor
, author
a niektóre niestandardowe role stworzyłem z rolą Scoper wtyczki np Manager
itp Wszelkie pomysły w jaki sposób mogę to zrobić get_users
?
Dzięki
Możesz to również zrobić za pomocą pojedynczego wywołania
get_users
lub pojedynczego wywołania,WP_User_Query
korzystając zmeta_query
argumentu:meta_query
Jest ciągnięty od tego, jakWP_User_Query
uchwyty narole
parametr, jeśli jesteś zainteresowany.źródło
Udało mi się to rozwiązać za pomocą tej funkcji:
Następnie w moim temacie mogę to zrobić:
źródło
Ponieważ
get_users()
zwraca tablicę użytkowników pasujących do ciągu zapytania podanego jako parametr. Po prostu uruchomget_users()
zapytanie dla każdej roli, którą chcesz osobno i scal wyniki. Następnie możesz wykonać pętlę w$users
taki sam sposób, jak w innym przypadku.źródło
$users = array_merge( get_users( array('role' => 'RoleOne' ,'fields' => 'ID') ), get_users( array('role' => 'RoleTwo' ,'fields' => 'ID') ));
i zadziałało. Dzięki!Problem z używaniem
array_merge
polega na tym, że nie można korzystać z paginacji. Naprawdę podoba mi się rozwiązanie @Andy Adams, ale jeśli szukasz wielu ról, użycie jego meta kwerendy spowoduje bardzo wolne zapytanie (wewnętrznie robi to noweINNER JOIN
dla każdego kwerendy meta).Moje rozwiązanie polega na użyciu meta zapytania wyrażenia regularnego:
To generuje zapytanie, które wygląda mniej więcej tak:
źródło
Możesz po prostu scalić więcej wyników zapytań użytkowników. Powiedzmy, że chcesz dołączyć zarówno
Author
iEditor
role. Zdefiniuj zapytanie dla każdego przypadku, a następnie użyj array_merge, aby skonsolidować w jedną tablicę.źródło
Wszystkie parametry z funkcji get_users są opcjonalne. Jeśli nic nie określisz, otrzymasz tablicę zawierającą obiekty odpowiadające każdemu użytkownikowi bieżącego bloga, w tym z niestandardowymi rolami.
źródło
źródło