Изучение WP_User_Query

Изучение WP_User_Query

От автора: в этой статье мы рассмотрим класс 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 свойств. Не изменяйте значения свойств. Получить можно, но не менять.

$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).

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 согласилась работать с вами на условии анонимности, и вам нужно исключить ее из списка редакторов. Ниже показан пример:

<?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. Тогда вам необходимо:

<?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

Источник: http://code.tutsplus.com/

Редакция: Команда webformyself.

Хотите быстро научиться создавать сайты и блоги на WordPress с уникальным дизайном?

Получите самую полную в Рунете бесплатную систему обучения создания сайтов на WordPress “Уникальный сайт с нуля”

Получить

Метки: ,

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree