У меня есть такой код:
$ 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;
Я хочу , чтобы получить больше ролей , а также включать в себя contributor
, author
и некоторые пользовательские роли , которые я создал с ролью Scoper плагин , например Manager
, и т.д. Любые идеи , как я могу сделать это с get_users
?
Спасибо
Вы также можете сделать это с помощью одного вызова
get_users
или с помощью одногоWP_User_Query
пути использованияmeta_query
аргумента:Это
meta_query
извлекается из того, какWP_User_Query
обрабатываетrole
параметр, если вам интересно.источник
Мне удалось решить эту проблему с помощью этой функции:
Тогда в моей теме я могу сделать это:
источник
Since
get_users()
возвращает массив пользователей, которые соответствуют строке запроса, заданной как param. Просто запуститеget_users()
запрос для каждой роли, которую вы хотите отдельно, и объедините результаты. Затем вы можете выполнить цикл так$users
же, как в противном случае.источник
$users = array_merge( get_users( array('role' => 'RoleOne' ,'fields' => 'ID') ), get_users( array('role' => 'RoleTwo' ,'fields' => 'ID') ));
, и это сработало. Спасибо!Проблема с использованием
array_merge
заключается в том, что вы не можете использовать нумерацию страниц. Мне очень нравится решение @Andy Adams, но если вы выполняете поиск по многим ролям, использование его мета-запроса приведет к очень медленному запросу (внутренне он выполняет новыйINNER JOIN
для каждого мета-запроса).Мое решение состоит в том, чтобы использовать мета-запрос регулярного выражения:
Это создает запрос, который выглядит примерно так:
источник
Вы можете просто объединить больше результатов пользовательских запросов. Допустим, вы хотите включить как
Author
иEditor
роли. Определите запрос для каждого случая, затем используйте array_merge для объединения в один массив.источник
Все параметры из функции get_users являются необязательными. Если вы ничего не укажете, вы получите массив, содержащий объекты, соответствующие каждому пользователю текущего блога, в том числе с пользовательскими ролями.
источник
источник