Функция get_user_by()
в WordPress позволяет получить данные пользователя на основе определенного поля, такого как ID, email, логин или slug (user_nicename). Эта функция является мощным инструментом для работы с пользовательскими данными и полезна в различных сценариях, таких как аутентификация, проверка существования пользователя или отображение данных профиля.
get_user_by( string $field, int|string $value ): WP_User|false
Параметры:
$field
(string, обязательный) — Поле, по которому необходимо получить пользователя. Возможные значения:id
илиID
— поиск по ID пользователя.slug
— поиск по user_nicename.email
— поиск по email.login
— поиск по user_login.
$value
(int|string, обязательный) — Значение для указанного поля, например, ID, email или логин пользователя.
Возвращаемое значение:
WP_User|false
— Возвращает объект WP_User при успешном нахождении пользователя илиfalse
, если пользователь не найден.
Важные моменты:
- Функция pluggable — это значит, что ее можно заменить на свою реализацию через плагин. Поэтому нельзя вызывать эту функцию до загрузки всех плагинов. Используйте хуки вроде
plugins_loaded
или более поздние, например,init
, чтобы быть уверенным, что функция доступна.
Пример 1: Получение пользователя по email
Функция может быть использована для поиска пользователя по email-адресу. Ниже представлен пример, который проверяет, существует ли пользователь с указанным email:
function email_exists( $email ) {
if ( $user = get_user_by( 'email', $email ) ) {
return $user->ID;
}
return false;
}
Результат:
Если пользователь с таким email существует, функция вернет его ID. В противном случае, вернется false
.
Пример 2: Получение пользователя по ID
Для получения информации о пользователе по его ID, используйте следующий код:
$user = get_user_by( 'id', 1 );
Результат:
Если пользователь с ID 1 существует, будет возвращен объект WP_User с его данными, например:
WP_User Object
(
[data] => stdClass Object
(
[ID] => 1
[user_login] => admin
[user_nicename] => admin
[user_email] => [email protected]
[user_registered] => 2023-10-01 12:00:00
[display_name] => Admin
)
...
)
Пример 3: Получение пользователя по логину
Вы можете получить пользователя по его логину следующим образом:
$user = get_user_by( 'login', 'admin' );
Пример 4: Использование для проверки существования пользователя
Вы можете использовать get_user_by()
для проверки, существует ли пользователь с определенным email или логином. Это полезно при регистрации или входе:
if ( $user = get_user_by( 'email', '[email protected]' ) ) {
echo 'Пользователь с таким email уже существует.';
} else {
echo 'Пользователь с таким email не найден.';
}
Пример 5: Получение данных о ролях пользователя
Вы можете дополнительно получить информацию о ролях и привилегиях пользователя после его поиска:
$user = get_user_by( 'id', 1 );
if ( $user ) {
echo 'Роль пользователя: ' . implode( ', ', $user->roles );
}
Результат:
Функция выведет роли, назначенные пользователю. Например:
Роль пользователя: administrator
Заключение
Функция get_user_by()
является важным инструментом для получения данных о пользователях на сайте WordPress. Она позволяет эффективно искать пользователей по различным полям, таким как ID, логин, email и slug. Возможности этой функции расширяются благодаря возвращаемому объекту WP_User, который содержит всю информацию о пользователе, включая его роли, привилегии и мета-данные.
Эта функция особенно полезна для задач, связанных с аутентификацией, валидацией данных, проверкой существования пользователей и отображением пользовательской информации на сайте.