- 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 пользователя. |
$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). |
[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 пользователей.