Функция is_user_logged_in() в WordPress: проверка авторизации пользователя

Проверка, авторизован ли пользователь — IS_USER_LOGGED_IN()

Функция is_user_logged_in() проверяет, является ли текущий посетитель авторизованным пользователем.

Общая информация

Эта функция принадлежит к группе плагинируемых функций, что означает, что она может быть заменена плагином. Эта функция начинает работать только после загрузки всех плагинов, а до этого момента она не определена. То есть вы не можете вызвать эту функцию и все функции, которые от нее зависят, напрямую в коде плагина. Их нужно вызывать в хуке plugins_loaded, или позже, например, в хуке init.

Как переопределить функцию

Чтобы заменить функцию, вы можете создать функцию с тем же именем в своем плагине. После этого ваша версия функции будет использоваться вместо стандартной.

Как быстро работает функция?

Вызывается функция wp_get_current_user(). Время выполнения:

  • 1 раз: 0.000012 сек (очень быстро)
  • 50000 раз: 0.01 сек (скорость света)

Возврат значения

Функция возвращает:

  • true, если пользователь авторизован,
  • false, если пользователь не авторизован.

Пример использования

Чтобы проверить, авторизован ли пользователь, просто используйте:

is_user_logged_in();

Примеры использования функции

Пример 1: Проверка авторизации пользователя

Этот код показывает разный текст в зависимости от того, авторизован пользователь или нет.

if ( is_user_logged_in() ) {
    echo 'Вы авторизованы!';
} else {
    echo 'Вы НЕ авторизованы!';
}

Пример 2: Не вызывайте функции слишком рано

Чтобы избежать ошибок, не вызывайте is_user_logged_in() слишком рано. Лучший момент для использования — хук init:

add_action( 'init', 'example_function' );

function example_function() {
    if ( is_user_logged_in() ) {
        // ваш код
    }
}

Пример 3: Добавление ссылки на выход из аккаунта в шаблоне

Этот код добавляет ссылки для авторизованных и неавторизованных пользователей.


    Выход

    Членский кабинет

Пример 4: Персональное сообщение для авторизованных пользователей

Этот код выводит персонализированное сообщение для авторизованных пользователей.

add_action( 'loop_start', 'wpdocs_personal_message_when_logged_in' );

function wpdocs_personal_message_when_logged_in() {
    if ( is_user_logged_in() ) {
        $current_user = wp_get_current_user();
        printf( 'Персональное сообщение для %s!', esc_html( $current_user->user_firstname ) );
    } else {
        echo 'Общее сообщение для неавторизованных пользователей!';
    }
}

Пример 5: Редирект на главную страницу

Этот код перенаправляет авторизованных пользователей, если они пытаются перейти на страницу входа.

function redirect_to() {
    global $pagenow;

    if ( !is_customize_preview() && is_user_logged_in() && 'index.php' !== $pagenow ) {
        wp_redirect( home_url(), 302 );
        exit();
    }
}

Изменения в версии

  • С версии 2.0.0: функция была введена.

Код функции

Вот как выглядит функция is_user_logged_in() в WordPress:

function is_user_logged_in() {
    $user = wp_get_current_user();
    return $user->exists();
}

Связанные функции

Вот несколько функций, которые связаны с пользователями:

  • current_user_can(): проверяет, есть ли у текущего пользователя определенные права.
  • get_current_user_id(): возвращает ID текущего пользователя.
  • wp_get_current_user(): возвращает объект текущего пользователя.

Понимание функции is_user_logged_in() поможет вам создавать более персонализированные и функциональные вебсайты, используя WordPress!

Leave a Reply

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