Знакомство с WP_User_Query

В сегодняшней статье я расскажу вам о том, как пользоваться классом WP_User_Query для опроса пользователей в WordPress.

Что такое WP_User_Query?

Вы наверняка уже догадались о предназначении WP_User_Query, просто прочитав название этого класса. Он предназначен для получения данных о пользователях.

Давайте посмотрим, что об этом классе говорится в кодексе Wordpress:

«WP_User_Query – это класс, определенный в in wp-includes/user.php, который позволяет опрашивать таблицы 'wp_users' и 'wp_usermeta' в базе данных WordPress. Этот класс был представлен в версии WP 3.1 как альтернатива устаревшему классу WP_User_Search»

Можно сказать, что WP_User_Query – это WP_Query для работы с пользователями. Этот класс работает с wp_users и wp_usermeta, и предназначен для построения запросов к этим таблицам.

Теперь мы познакомимся со свойствами, методами и параметрами WP_User_Query.

Напоминание: «свойства» и «методы» - это то же, что и «переменные» и «функции», которые мы обычно определяем в PHP-классе.

Свойства WP_User_Query

Для класса WP_User_Query предусмотрено всего 7 свойств. Но лучше не изменять значения, хранящиеся в этих свойствах. Вы можете получать их значения, но не стоит изменять их.

$query_vars

Хранит в себе ассоциативный массив переменных запроса и их значений.

$results

Хранит в себе данные, полученные в результате выполнения запроса о пользователях.

$query_fields

Это свойство, подобно последующим свойствам, хранит в себе SQL-команды запроса.

$query_from

Хранит в себе команду FROM.

$query_where

Хранит в себе условие WHERE.

$query_orderby

Хранит в себе команду ORDERBY, и используется для сортировки полученных результатов (найденных пользователей).

$query_limit

Содержит в себе команду LIMIT, и используется для ограничения количества полученных результатов (найденных пользователей).

Методы WP_User_Query

В этом классе всего 4 метода, и работают они по тому же принципу, что и в WP_Query.

Метод get()

Этот метод возвращает переменную запроса.

Метод set()

Устанавливает, а не получает переменную запроса.

Метод get_results()

В отличие от WP_Query, класс WP_User_Query не работает с циклом. Вместо этого нужно использовать метод get_results(), чтобы получить результаты запроса и работать с ними.

Метод get_total()

Возвращает общее количество элементов (пользователей).

Параметры WP_User_Query

У WP_User_Query всего 17 параметров, и они очень похожи на те, которые мы рассматривали в статьях, посвященных классу WP_Query.

  • blog_id: целое число, указывается 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 – по убыванию);
  • offset: количество пользователей с самого начала, которых необходимо пропустить;
  • number: количество пользователей, которых необходимо получить и вывести;
  • count_total: логическое выражение (TRUE/FALSE) для включения и отключения подсчета общего количества пользователей;
  • fields: строка или массив, в котором указывается, какие поля нужно получить из таблицы wp_users;
  • who: строка (‘authors’ или ‘all’) для определения, каких пользователей нужно запрашивать;
  • meta_key: строка для определения ключа произвольного поля метаданных пользователя;
  • meta_value: строка для определения значения произвольного поля метаданных пользователя;
  • meta_compare: строка для установки оператора сравнения параметра 'meta_value'. Принимает следующие значения: '=', '!=', '>', '>=', '

.

<?php

// Добавляем в массив ID Lisa (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 {

    // Выводим сообщение "редакторов не найдено" message.
    echo __( 'Редакторов не найдено!', 'tutsplus' );

}

?>

Осуществляем поиск пользователей Gmail среди ваших авторов

Предположим, что нужно собрать email-адреса только тех ваших авторов, которые используют Gmail.

Вот что следует сделать:

<?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 много общего, и это делает класс WP_User_Query более простым для понимания.

Поделитесь своими мыслями со мной и другими читателями. Если вам понравилась статья, обязательно поделитесь ей с друзьями.

Увидимся в последующих статьях из этой серии!

Перевод статьи “Mastering WP_User_Query” был подготовлен дружной командой проекта Сайтостроение от А до Я.

02 декабря 2015 в 14:37
Материалы по теме
{"url":"http://www.fastvps.ru/", "src":"/images/advbanners/fastvps.png", "alt":"Хостинг Fastvps.ru. Наш выбор!"}
Заработок