Пользователи в WordPress (часть 3)

В прошлой статье "Пользователи в WordPress (часть 2)" был разобран способ получения данных одного пользователя и проверка авторизации. В этой статье мы продолжим делать различные выборки. Узнаем как получить список пользователей, id текущего и его опции. Далее обсудим функции:
  • get_current_user_id - возвращает id текущего пользователя
  • get_user_by - получает пользователя по разным полям
  • get_user_option - получает указанную опцию пользователя
  • get_users - возвращает список пользователей
Рассмотрим все пункты по порядку.

Как получить id текущего пользователя

Функция "get_current_user_id" возвращает id текущего пользователя (число) или ноль "0", если пользователь неавторизован. У функции нет аргументов. Пример использования:
$id = get_current_user_id();
echo 'Ваш id=' . $id;

Получение пользователя по разным свойствам

Если необходимо получить данные произвольного пользователя по ID, нику, логину или почте, то можно воспользоваться функцией "get_user_by". Эта функция возвращает объект WP_User, описывающий пользователя, или логическое "false", если пользователь не найден. Пример использования:
$user = get_user_by( $field, $value );
Рассмотрим аргументы этой функции:
Название Тип Описание
$field строка Поле, по которому будет происходить поиск для получения пользователя. Возможные значения:
ID - поиск по полю ID
slug - поиск по полю user_nicename
email - поиск по полю user_email
login - поиск по полю user_login
$value число/ строка Значение указанного в первом параметре поля.
Пример использования:
$data = get_user_by('email', 'support@mousedc.ru');
echo 'ID: '               . $data->ID . '<br>';
echo 'Логин: '            . $data->user_login . '<br>';
echo 'Почта: '            . $data->user_email . '<br>';
echo 'Имя: '              . $data->user_firstname . '<br>';
echo 'Фамилия: '          . $data->user_lastname . '<br>';
echo 'Отображаемое имя: ' . $data->display_name . '<br>'; 

Получение опции пользователя

Для получения значения определённой опции конкретного пользователя, можно воспользоваться функцией "get_user_option". У этой функции есть два параметра:
$option_value = get_user_option( $option, $user );
Название Тип Описание
$option строка Название опции, которую нужно получить.
$user число ID пользователя.
Приведём пример использования этой функции. Проверим включено ли у пользователя с id равным "9" отображение панели администрирования (админ-бара):
$bar_enabled = get_user_option( 'show_admin_bar_front', 9 );
if( $bar_enabled ) {
   echo 'Панель видна';
} else {
   echo 'Панель спрятана';
}

Получение списка пользователя

На сложных проектах часто возникает необходимость получения выборки из пользователей. В WordPress для этого подойдёт функция "get_users". Благодаря ей можно сделать выборку сразу по нескольким параметрам, передавая требуемые ключи-значения в единственный аргумент этой функции.

Приведём пример использования этой функции. Выведем почтовые адресы всех пользователей из мультисайтового блога с id=1, с ролью "подписчик" и отсортируем их по почтовому адресу:
$args = array(
   'blog_id' => 1, // блог с id=1
   'role' => 'subscriber', // роль пользователей - подписчики
   'orderby'   => 'email', // сортировка списка по мэйлам
);
$users = get_users( $args );
foreach($users as $user) {
   echo $user->user_email . '
'; }
Обратите внимание, что сортировку по мэйлу мы сделали именно в фильтре, переданному функции, а не сортировали после получения выборки. В таком случае сортировка происходит на уровне базы данных MySQL, прямо во время запроса. Что значительно быстрее, чем сортировка через PHP.
Рассмотрим подробнее, что может находиться в массиве "$args".
Название Тип Описание
blog_id число ID текущего блога (при мультисайтовости).
role строка/ массив Роли пользователей в виде массива или строки (через запятую). Если указано несколько ролей, то логика получения - "И".
role__in массив Роли пользователей в виде массива. Логика получения - "ИЛИ".
role__not_in массив Роли пользователей в виде массива. Логика получения - "НЕ И".
include массив Массив ID пользователей. Пользователи будут включены в выборку вне зависимости от значений других параметров.
exclude массив Массив ID пользователей. Пользователи будут исключены из выборки вне зависимости от значений других параметров.
meta_key строка Название ключа, который должен быть у пользователя. Значение указывается в "meta_value" (см. далее)
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_query массив Массив данных о meta_key/meta_value.
orderby строка Поле для сортировки результата: include, nicename, email, url, registered, display_name, post_count, meta_value, meta_value_num, $meta_key (ключ массива запроса из meta_query). По умолчанию: 'user_login'
order строка Направление сортировки результата. ASC - прямая сортировка (a-я). DESC - обратная (я-а).
offset число Количество пользователей из начала выборки, которых необходимо пропустить в выводе.
number число Количество возвращаемых пользователей.
paged число Номер страницы. Используется в связке с параметром number для создания постраничной навигации. По умолчанию: 1
search строка Запрос для поиска пользователей по точному вхождению. Если необходимо найти подстроку, то используется символ звездочки *. К примеру, '*Mouse*' вернёт результаты: 'IamMouseDC', 'MouseDC', 'IamMouse'. Если параметр search_columns не указан, то поиск будет проходить по подходящим колонкам (по типу). По умолчанию поиск проходит в: mail, URL, ID или имя пользователя (но не в "отображаемое имя").
search_columns массив Массив названий колонок, в которых проходит поиск из параметра "search". Возможные значения: ID, login, nicename, email, url.
fields строка/ массив Какие поля включить в возвращаемые данные о каждом пользователе.
all - все (по умолчанию).
all_with_meta - дополнительно будут получены значения метаданных пользователя.
Массив из полей таблицы wp_user: ID, display_name, user_login, user_nicename, user_email, user_url, user_registered. При этом будут получены только указанные данные.
who строка При указании значения "authors" выборка будет включать только авторов. По умолчанию: '' (все пользователи)
has_published_posts логический/ массив/ строка Тип записей (название или массив из названий), которые публиковали пользователи. Если указать логическое "true", то будут показаны пользователи, у которых есть хотя бы одна опубликованная запись.
date_query массив Даты регистраций пользователей (колонка user_registered).
Функция "get_users" возвращает массив с данными о каждом пользователе:
[ID]                  => 1
[user_login]          => mousedc
[user_pass]           => $M$Rt2evZZXiJB1BGdMk26gPxudi3x6c
[user_nicename]       => MouseDC
[user_email]          => support@mousedc.ru
[user_url]            => https://www.mousedc.ru/
[user_registered]     => 2020-11-14 13:25:09
[user_activation_key] => 
[user_status]         => 0
[display_name]        => MouseDC
Если же задано значение "fields", то вернётся массив пользователями, у которых есть только значения полей в "fields". К примеру, если "fields" равно 'array(ID)', то вернётся массив из ID пользователей.
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Была ли эта статья полезна? Есть вопрос?
Cмотрите другие статьи: