Функция get_user_by() в WordPress
Функция get_user_by() позволяет получить данные пользователя на основе заданного поля и его значения. Это может быть ID, логин или адрес электронной почты пользователя.
Общая информация
Функция get_user_by() является плагинизируемой, что означает, что её можно заменять в сторонних плагинах. Она работает после загрузки всех плагинов, так что вы не можете вызывать эту функцию из кода плагина до события загрузки плагинов. Вызывайте её, например, на хуке plugins_loaded или init.
Подмена функции
Вы можете создать функцию с тем же именем в своем плагине, в результате чего она заменит оригинальную.
Использование
Функция используется в следующих случаях:
username_exists()get_userdata()email_exists()
Пример производительности
- 1 вызов — 0.0016251 сек (очень медленно)
- 50000 вызовов — 1.63 сек (быстро)
- PHP 7.4.8, WP 5.6
Нет хуков.
Возврат
Функция возвращает либо объект WP_User, если всё прошло успешно, либо false, если возникла ошибка.
Синтаксис
get_user_by( $field, $value );
Аргументы
-
$field (строка, обязательный): Поле, по которому вы хотите получить пользователя. Возможные значения:
idилиID— по ID.slug— по полюuser_nicename.email— по полюuser_email.login— по полюuser_login.
-
$value (строка/число, обязательный): Значение, соответствующее указанному полю.
Примеры использования
1. Получение пользователя по электронной почте
Функция, которая использует get_user_by() для получения информации о пользователе по его e-mail. Если пользователь существует, будет возвращён его ID.
function email_exists( $email ) {
if ( $user = get_user_by('email', $email) )
return $user->ID;
return false;
}
2. Получение пользователя по ID
Здесь мы получаем пользователя по его ID. В результатах будет объект WP_User, содержащий информацию о пользователе.
$user = get_user_by( 'id', 1 );
$user содержит:
WP_User Object
(
[data] => stdClass Object
(
[ID] => 1
[user_login] => kama
[user_pass] => $P$Bu354452345AfDy0g3453245345345J/
[user_nicename] => kama
[user_email] => [email protected]
[user_url] =>
[user_registered] => 2010-03-26 09:27:40
[user_activation_key] =>
[user_status] =>
[display_name] => Kama
)
[ID] => 1
[caps] => Array
(
[administrator] => 1
)
[cap_key] => wp_capabilities
[roles] => Array
(
[0] => administrator
)
// Другие ��войства...
)
Примечания
- Глобальная переменная:
$current_user— это объект текущего пользователя, содержащий его данные.
Изменения в версии
Функция была добавлена в версии 2.8.0 и с версии 4.4.0 добавлена информация о том, что ID является алиасом для id.
Реализация функции
Вот как выглядит реализация функции get_user_by():
function get_user_by( $field, $value ) {
$userdata = WP_User::get_data_by( $field, $value );
if ( ! $userdata ) {
return false;
}
$user = new WP_User();
$user->init( $userdata );
return $user;
}
Связанные функции
Существуют также другие функции, которые могут быть полезны:
clean_user_cache()current_user_can()delete_user_option()get_current_user_id()get_edit_user_link()get_userdata()wp_create_user()wp_insert_user()
Эти функции позволяют управлять пользователями и их данными в WordPress.