get_users() WP 3.1
Получает пользователей в соответствии с переданными параметрами.
Работает на базе класса WP_User_Query{}
wp_dropdown_users()
.Хуков нет.
Возвращает
Массив. Массив объектов с данными о каждом пользователе. Если указано определенное поле в параметре 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( $args );
Шаблон использования
$args = array( '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 ); $users = get_users( $args ); foreach( $users as $user ){ // обрабатываем }
- $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. Может быть: !=, >, >=, <, или <=. Например указав тут оператор !=, будут получены все пользователи у которых есть поле 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 ) */
Код get users:
wp-includes/user.php
VER 4.9.5
Cвязанные функции
Из метки: Пользователи (_user)
- clean_user_cache()
- current_user_can()
- delete_user_option()
- get_current_user_id()
- get_currentuserinfo()
- get_user_by()
Еще из раздела: Остальное
- auth_redirect()
- count_many_users_posts()
- count_user_posts()
- count_users()
- email_exists()
- get_author_posts_url()
- get_the_author()
То, что нужно, спасибо. Но у Вас не указаны возможности: meta_query
Спасибо, дополню.
У меня к Вам банальный вопрос, который завел меня в тупик. Как удалить зарегистрированных пользователей?
Если просто через админку, то они удаляются но их ID как бы остаётся, если я удалю людей с ID 2,3,4,5 то следующий зарегистрированный получит ID 6. Как бы по логике он должен получить ID 2.
Удаляла в ручную таблицу wp-user и плагинами чистила. Проблема осталась!
Если коротко то никак! Так происходит потому что в базе данных у основной колонки стоит авто-инкремент, т.е. при создании записи предыдущее число увеличивается на 1. Это нужно чтобы все строи со 100% гарантией имели свой уникальный ID. Если строка удалена, то ID потерян и это не страшно.
У меня встречный вопрос. Зачем вам точный порядок 123456?
Ну как вариант, можно конечно при удалении пользователя сбрасывать этот инкремент до последнего максимального. Но так надо будет все учитывать и если где-то что-то останется не учтено, новый пользователь может получить возможности или что-то еще от старого. Ну и там еще много разных глюком в теории может быть... Короче, так не делается!
Да мне точный порядок как бы и не нужен. Дело вот в чем: Когда новый user совершает своей первый вход на сайт, в отдельно заведённой рубрике создаётся пост с тайтлом, например "user-23" вот "23" это его ID. Теперь этот пост - это его профиль на сайте который выводится через отдельный single "single-cat-2.php".
Я решила отказаться от стандартного "author.php" и сделать профиль пользователя прям из обычного поста, там могу прикрутить комментарии - это как бы открытая личка! Где можно написать что-то для конкретного пользователя в рамках его же профиля. Благодаря вашему блогу там можно ещё много чего "намутить" лиж бы идею придумать.
Вот, как вы уже понимаете, ссылка на такой профиль выглядит как "site.ru/user-23" для usera с ID "23" и так далее. А у меня пользователи начиная со "2" и до 46-го удалены. Я их нарегала пока заборы городила!
Вот когда сайт окажется в сети и если какой-то умник начьнёт ID-ды перебирать в адресной строке, до 46-го будет получать 404. В принципи я не знаю зачем волнуюсь по этому поводу, просто хочется порядка во всем.
Возможно в конце своих деяний, просто поставлю на локалку ещё один WP и настрою все, и в дальнейшем пользователи будут регаться по порядку.
Я рекомендую вообще не париться на этот счет, тут порядок не к чему.
Спасибо, так и поступлю. ))
А где почитать про user_status?
Что значат значения 0, 1, 2?
Это поле в таблице wp_users, которое используется в Мультисайтах при перемещении юзера в спам. Вот эту функцию просмотрите: update_user_status
Добрый день!
Скажите, как получить список всех пользователей (редакторов и админов), кто редактировал произвольный материал?