Пользователи в 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мотрите другие статьи:
Была ли статья полезной?
Была ли эта статья полезна? Есть вопрос?
хостинг для сайтов
Закажите недорогой хостинг Заказать

всего от 290 руб