От автора: в этой статье мы рассмотрим класс WP_User_Query и научимся создавать запросы в таблицу с пользователями WordPress. Начнем!
Что такое WP_User_Query?
Вы, наверное, уже поняли смысл класса по его названию. Конечно, вы же не думаете, что класс WP_User_Query будет работать с виджетом «Tag Cloud» — данный класс работает с запросами в таблицу пользователей в WordPress. Посмотрим, что говорится в кодексе об этом классе:
«WP_User_Query – класс, определенный в wp-includes/user.php, позволяет создавать запросы в базу данных WordPress в таблицы wp_users и wp_usermeta. Класс впервые появился в версии 3.1, а класс WP_User_Search устарел.»
По существу, можно сказать класс WP_User_Query это WP_Query только для пользователей. Класс работает с таблицами wp_users и wp_usermeta и вытягивает все данные о пользователях. Рассмотрим класс более подробно на примерах: свойства, методы и параметры.
Совет: Мы уже изучили это в прошлой статье о классе WP_Query. Напомню: свойства и метода это те же самые переменные и функции, только они определены в классе PHP.
Свойства WP_User_Query
В классе всего 7 свойств. Не изменяйте значения свойств. Получить можно, но не менять.

Бесплатный курс «Создание тем на WordPress. Быстрый старт»
Изучите курс и узнайте, как создавать уникальные темы на WordPress с нестандартной структурой страниц
Скачать курс$query_vars — Хранится ассоциативный массив переменных с запросами и их значений.
$results — Число найденных пользователей.
$query_fields — Свойство хранит поля для SQL-выражений.
$query_from — В свойстве хранится условие FROM для запроса.
$query_where — Хранится условие WHERE для запроса.
$query_orderby — Хранится условие ORDERBY для запроса, используется для сортировки полученных пользователей.
$query_limit — Хранится условие LIMIT, используется для ограничения количества пользователей.
Методы WP_User_Query
Помните методы WP_Query? В этом классе всего 4 метода, и они работают аналогично методам WP_Query. Быстро пробежимся по ним.
get() — Метод просто получает результат запроса.
set() — Обратный первому, задает переменную для запроса.
get_results() — В отличие от WP_Query, в классе WP_User_Query не работают циклы. То есть необходимо вызвать метод get_results() и потом вручную обработать результат.
get_total() — Возвращает количество выбранных записей.
Параметры WP_User_Query
Как и в классе WP_Query, в классе WP_User_Query есть параметры, которые нужно знать. Но в отличие от класса WP_Query, где более 50 параметров, тут их всего 17. Все параметры похожи на параметры класса WP_Query. Так что если с параметрами в классе WP_Query не возникло проблем, то и тут не возникнет:
blog_id: Для сетей с несколькими сайтами, ID блога. По умолчанию стоит текущий блог.
role: роль пользователя. Принимается subscriber, author, contributor, author, editor, administrator или любая пользовательская роль.
include: Массив ID пользователей для включения в запрос.
exclude: Массив ID пользователей для исключения из запроса.
search: Поисковое выражения для поиска в таблице wp_users.
search_columns: массив столбцов таблицы wp_users. Принимается ID, user_login, user_url, user_email или user_nicename.
orderby: Выражение для сортировки. Принимается ID, display_name, name/user_name, login/user_login, nicename/user_nicename, email/user_email, url/user_url, registered/user_registered, post_count или meta_value. По умолчанию login.
order: Сортировка по возрастанию (ASC) или убыванию (DESC).

Бесплатный курс «Создание тем на WordPress. Быстрый старт»
Изучите курс и узнайте, как создавать уникальные темы на WordPress с нестандартной структурой страниц
Скачать курсoffset: Число, указывающее сколько пользователей вытянуть.
number: указывает сколько пользователей вернуть.
count_total: Булево значение (TRUE/FALSE) показывает можно ли посчитать общее количество выбранных записей или нет.
fields: строка или массив полей таблицы wp_users, которые нужно вернуть.
who: Строка с именем пользователя для запроса (автор блога или другие пользователи).
meta_key: Пользовательский мета ключ.
meta_value: Пользовательское мета значение.
meta_compare: оператор для параметра ‘meta_value’. Принимается ‘=’, ‘!=’, ‘>’, ‘>=’, ‘<‘, ‘<=’, ‘LIKE’, ‘NOT LIKE’, ‘IN’, ‘NOT IN’, ‘BETWEEN’, ‘NOT BETWEEN’, ‘EXISTS’ или ‘NOT EXISTS’. По умолчанию ‘=’.
meta_query: массив для мета запроса, ключи:
— key: ключ.
— value: строка или массив значения(ий).
— compare: Строка оператора. Принимаются те же операторы, как и с параметром meta_compare.
— type: пользовательский тип. Принимается NUMERIC, BINARY, CHAR, DATE, DATETIME, DECIMAL, SIGNED, TIME или UNSIGNED. По умолчанию CHAR.
Пара примеров по использованию WP_User_Query
Рассмотрим пару примеров принципа работы WP_User_Query.
Получить всех редакторов кроме Lisa
К примеру, вы хотите отобразить в списке всех редакторов сайта для ваших пользователей. Но один из редакторов Lisa согласилась работать с вами на условии анонимности, и вам нужно исключить ее из списка редакторов. Ниже показан пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<?php // добавим id Лизы в массив, 14. $exclude_list = array( 14 ); $args = array( 'role' => 'Editor', 'exclude' => $exclude_list ); // создаем запрос. $my_user_query = new WP_User_Query( $args ); // получаем результат. $editors = $my_user_query->get_results(); // ищем редакторов if ( ! empty( $editors ) ) { echo '<ul class="editors-list">'; // проходимся циклом по редакторам. foreach ( $editors as $editor ) { // получаем информацию о каждом из них. $editor_info = get_userdata( $editor->ID ); // выводим имя редактора. echo '<li>' . $editor_info->display_name . '</li>'; } echo '</ul>'; } else { // Отображаем сообщение "no editors found". echo __( 'No editors found!', 'tutsplus' ); } ?> |
Поиск среди авторов пользователей с адресом Gmail
Скажем, вы хотите получить email адреса ваших авторов, которые используют Gmail. Тогда вам необходимо:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php // Устанавливаем аргументы. $args = array( // Ищем только авторов. 'who' => 'authors', // Ищем email адрес, заканчивающийся на `@gmail.com`. 'search' => '*@gmail.com', // Ищем только по полю `email`. 'search_columns' => array( 'email' ), // Возвращаем только поле `email`. 'fields' => 'email' ); // Создаем запрос. $my_user_query = new WP_User_Query( $args ); // получаем результат. $gmailers = $my_user_query->get_results(); ?> |
Заключение
Как вы видите, между классами WP_Query и WP_User_Query не так уж и много различий. А те, что есть, только облегчают понимание. Надеюсь, я помог вам понять назначение данного класса WordPress. Хотите что-нибудь добавить? Делитесь своими мыслями в комментариях. Если вам понравилась статья, не забудьте поделиться ей с друзьями.
Автор: Barış Ünver
Источник: //code.tutsplus.com/
Редакция: Команда webformyself.

Бесплатный курс «Создание тем на WordPress. Быстрый старт»
Изучите курс и узнайте, как создавать уникальные темы на WordPress с нестандартной структурой страниц
Скачать курс
Создание тем на WordPress. Быстрый старт
Изучите курс и узнайте, как создать тему на WordPress
Смотреть