В прошлой статье "
Пользователи в WordPress (часть 1)" мы научились создавать и изменять пользователей. Теперь попробуем использовать простейшие примеры функций и классов, которые связаны с учётными записями. В этой статье рассмотрим:
- is_user_logged_in - проверяет авторизован ли пользователь
- wp_get_current_user - получает данные пользователя
- WP_User - получает и изменяет данные пользователя
Рассмотрим все пункты по порядку.
Проверка авторизации
Функция "is_user_logged_in" проверяет зарегистрирован ли текущий пользователь. Возвращает логическое "true", если авторизован, иначе "false". Функция не принимает никаких аргументов. Пример использования функции:
if ( is_user_logged_in() ) {
echo 'Вы авторизованы';
} else {
echo 'Вы анонимный пользователь';
}
По сути функция "is_user_logged_in" является функцией-обёрткой для "wp_get_current_user", о которой пойдёт речь далее
Получение данных
Данные текущего пользователя можно получить с помощью функции "wp_get_current_user". Функция не принимает никаких аргументов. Пример использования функции:
$data = wp_get_current_user();
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>';
Как говорилось ранее, функция "is_user_logged_in" является функцией-обёрткой для "wp_get_current_user". Вот её код:
function is_user_logged_in() {
$user = wp_get_current_user();
return $user->exists(); // возвращает логическое "true" (если пользователь существует) или "false" (если нет)
}
Получение данных, управление ролями
Класс WP_User позволяет получать, удалять или изменять данные пользователей. Пример создания объекта класса:
$data = new WP_User( $user_id, $login, $blog_id );
Разберём аргументы в этой примере:
Название |
Тип |
Описание |
$user_id |
число/ строка/ объект |
ID пользователя (обязательный параметр). Если поставить равным нулю, то будет использован второй параметр - логин. Можно испоставить объект "WP_User" |
$login |
строка |
Логин пользователя. Игнорируется, если установлен первый параметр - $id |
$blog_id |
число |
ID блогга при использовании "мультисайтовости". По умолчанию - текущий блог. |
Приведём пример использования, модифицировав предыдущий по проверке существования пользователя с id равным 9:
$user = new WP_User( 9 );
if ( $user->exists() ) {
echo 'Пользователь с id=9 существует!';
}
Метод "exists" не является единственным. Перечислим публичные методы класса WP_User:
Название |
Описание |
exists() |
Проверяет существует пользователь в БД. Возвращает логические "true" или "false" |
get($key) |
Получает значение указанного параметра "$key" из таблиц users или usermeta. Возвращает строку или массив |
has_prop($key) |
Определяет есть ли у пользователя указанный параметр из таблиц users или usermeta. Возвращает логические "true" или "false" |
get_role_caps() |
Возвращает массив из ролей пользователя и его возможностей, устанавливая свойства roles и allcaps. Личные возможности пользователей объединяются с возможности роли, при этом пользователь может не иметь отдельных возможностей роли. |
add_role($role) |
Добавляет указанную роль пользователю ($role - строка, название роли). Обновляет данные пользователя в БД. |
remove_role($role) |
Удаляет роль у пользователя ($role - строка, название роли). Обновляет метаданные пользователя в БД. |
set_role($role) |
Устанавливает роль для пользователя ($role - строка, название роли). При этом будут удалены все предыдущие роли и установлена указанная. Если в $role указать пустую строку, тогда все роли будут удалены. |
add_cap($cap, $grant) |
Добавляет возможность ($cap) для текущего пользователя ($cap - строка, название возможности).
Параметр $grant имеет логический тип. В значении "true" (по умолчанию) - разрешает доступ к возможности, "false" - запрещает. По умолчанию разрешен - "true. |
remove_cap($cap) |
Удаляет указанную возможность у пользователя. |
remove_all_caps() |
Удаляет все возможности пользователя. |
has_cap($cap) |
Проверяет есть ли указанная возможность у пользователя. |