Функция get_user_by() в WordPress: использование, примеры, аргументы

Функция 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.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *