get_users() WP 3.1
Получает пользователей в соответствии с переданными параметрами.
Работает на базе класса WP_User_Query{}
Хуков нет.
Возвращает
Массив. Массив объектов с данными о каждом пользователе. Если указано определенное поле в параметре fields, то будет возвращен массив объектов со значениями этого поля:
[ID] => 1 [user_login] => admin [user_pass] => $P$Bxudi6gJMk2GRt2ed3xvZ06c1BPZXi/ [user_nicename] => admin [user_email] => admin@host.com [user_url] => http://localhost/ [user_registered] => 2010-06-29 07:08:55 [user_activation_key] => [user_status] => 0 [display_name] => Richard Branson
Пример возвращаемых данных, когда указано определенное поле, например: array('display_name')
:
Array ( [0] => stdClass Object ( [display_name] => Richard Branson ) )
Шаблон использования
$users = get_users( [ 'blog_id' => $GLOBALS['blog_id'], 'role' => '', 'role__in' => array(), 'role__not_in' => array(), 'meta_key' => '', 'meta_value' => '', 'meta_compare' => '', 'meta_query' => array(), 'include' => array(), 'exclude' => array(), 'orderby' => 'login', 'order' => 'ASC', 'offset' => '', 'search' => '', 'search_columns' => array(), 'number' => '', 'paged' => 1, 'count_total' => false, 'fields' => 'all', 'who' => '', 'has_published_posts' => null, 'date_query' => array() // смотрите WP_Date_Query ] ); foreach( $users as $user ){ // обрабатываем }
Использование
$users = get_users( $args );
- $args(массив)
- Параметры по которым будут получены пользователи.
По умолчанию: дефолтные
Аргументы параметра $args
- blog_id(число)
- ID текущего блога. Используется при включении мультисайтов.
- role(строка|массив)
- Роли пользователей, которых нужно получить. Указывается в виде массива или строкой (несколько ролей перечисляются через запятую). Получаемый юзер, должен иметь все из указанных ролей.
- role__in(массив)
- Массив названий ролей, пользователей с которыми нужно получить. Получаемый юзер, должен иметь хотя бы одну из указанных ролей.
По умолчанию: array() - role__not_in(массив)
- Массив названий ролей, пользователей с которыми нужно исключить из результата. Если у юзера есть указанная роль он будет исключен.
По умолчанию: array() - include(массив)
- Массив ID пользователей, которых нужно получить. Будут получены только эти пользователи, независимо от других параметров, не соответствующих этому параметру.
- exclude(массив)
- Массив ID пользователей, которых нужно исключить из результата.
- meta_key(строка)
- Название ключа, который должен быть у пользователя, чтобы он попал в отбор.
- meta_value(строка)
- Значение ключа meta_key. Будут получены пользователи если совпадает значение.
- meta_compare(строка)
- Оператор сравнения для значения
meta_value
. Может быть:=
,!=
,>
,>=
,<
,<=
,LIKE
,NOT LIKE
,IN
,NOT IN
,BETWEEN
,NOT BETWEEN
,EXISTS
,NOT EXISTS
,REGEXP
,NOT REGEXP
,RLIKE
. Например указав тут оператор!=
, будут получены все пользователи у которых есть поле meta_key со значением не равным meta_value.
По умолчанию: '=' - meta_query(массив)
- Массив данных о meta_key/meta_value. По аналогии с WP_Query.
- orderby(строка)
Как сортировать полученный список пользователей?
Можно указать:include
,nicename
,email
,url
,registered
,display_name
,post_count
,meta_value
,meta_value_num
,$meta_key
(ключ массива запроса из meta_query).Заметка: post_count работает только для типа записи post и не работает для произвольных типов записей (справедливо для версии WP 4.6). Обойти это не просто, возможно в будущем это измениться, а пока можно сделать так:
Пусть тип записи называется realty, тогда используйте такой хук прямо перед get_users().
add_action('pre_user_query', 'temp_replace'); function temp_replace($query){ $query->query_from = str_replace("post_type = 'post'", "post_type = 'realty'", $query->query_from ); }; // Ваш вызов get_users() !!!!!!!!!!!!!! remove_action('pre_user_query', 'temp_replace');
По умолчанию: 'user_login'
меню
- order(строка)
- Направление сортировки. ASC - от меньшего к большему (a-я). DESC - от большего к меньшему (я-а).
- offset(число)
- Отступ от начала полученного списка. Если указать 5, то 5 первых пользователей из полученного списка будут пропущены.
- number(число)
- Количество пользователей которых нужно получить.
- paged(число)
- Используется в связке с параметром
number
. Номер страницы пагинации.
По умолчанию: 1 - search(строка)
Запрос для поиска пользователей. Поиск идет по точному вхождению. Когда нужно искать подстроку, используйте в запросе *. Например, если нужно найти пользователя с именем Иван Викторович, то запрос будет выглядеть так: Иван Викторович или Иван* или *Викторович или *Виктор*
Если параметр
search_columns
не указан, то будет проанализирован поисковой запрос и поиск будет проходить по подходящим колонкам. По умолчанию ищет в: e-mail, URL, ID или имя пользователя (отображаемое имя в поиске не участвует).
меню
- search_columns(массив)
Массив названий колонок в которых искать запрос из параметра search.
Может быть:ID
,login
,nicename
,email
,url
.Когда нужно установить особый сет колонок, используйте фильтр
user_search_columns
:// $search_columns = apply_filters( 'user_search_columns', $search_columns, $search, $this ); add_filter('user_search_columns', function($cols){ // изменяем $cols return $cols; });
По умолчанию: array()
- fields(строка/массив)
Какие поля включить в возвращаемые данные о каждом пользователе.
all
- все.all_with_meta
- будут получены еще и значение метаданных пользователя.ID
,display_name
,user_login
,user_nicename
,user_email
,user_url
,user_registered
- поля из таблицы wp_user - будут получены только указанные данные. Эти поля нужно указывать в массиве, даже если нужно получить всего одно поле, например:array('user_email')
.
По умолчанию: 'all'
- who(строка)
- Если указать
authors
, то будут показаны только авторы.
По умолчанию: '' (все пользователи) - has_published_posts(логический/массив/строка)
Укажите название типа записи или массив названий. Тогда будут получены пользователи у которых есть опубликованные записи указанного типа.
Можно указать
true
, тогда будут получены пользователи у которых есть хоть одна опубликованная запись любого публичного типа.- date_query(массив)
- Запрос по дате. Смотрите wp_date_query. Работает с колонкой
user_registered
- когда пользователь был зарегистрирован. - count_total(логический)
Для этой функции параметр нельзя изменить и он всегда равен false. Используется в WP_User_Query{} для создания пагинации.
Считать сколько всего пользователей было найдено по запросу.
По умолчанию: false
Примеры
#1. Выведем список e-mail всех подписчиков блога с ID 1:
<ul> <?php $blogusers = get_users('blog_id=1&orderby=nicename&role=subscriber'); foreach ($blogusers as $user) { echo '<li>' . $user->user_email . '</li>'; } ?> </ul>
#2 Пример с использование поля 'search'
Этот пример найдет и выведет на экран всех пользователей у которых имя, ID или email равен "john".
<ul> <?php $blogusers = get_users('search=john'); foreach ($blogusers as $user) { echo '<li>' . $user->user_email . '</li>'; } ?> </ul>
#3 Для поиска также можно использовать знак *
до или после запроса.
Знак заменяет любое количество любых символов. Например, чтобы найти всех пользователей у которых ID, имя или email начинается с "jo", используем такой код:
<ul> <?php $blogusers = get_users('search=jo*'); foreach ($blogusers as $user) { echo '<li>' . $user->user_email . '</li>'; } ?> </ul>
Если поставить *
в начало (*jo
), то мы получим пользователей оканчивающихся на jo
.
#4 Получим все email администраторов сайта
// получим email администраторов $users = get_users( array( 'role' => 'administrator', 'fields' => ['user_email'], ) ); $emails = wp_list_pluck( $users, 'user_email' ); /* $emails Array ( [0] => mymail@bk.ru [1] => secondmail@list.ru ) */
Заметки
- Смотрите: WP_User_Query
Список изменений
С версии 3.1.0 | Введена. |
Код get_users() get users WP 5.6.2
function get_users( $args = array() ) {
$args = wp_parse_args( $args );
$args['count_total'] = false;
$user_search = new WP_User_Query( $args );
return (array) $user_search->get_results();
}