wp_logout()

Разлогинивает текущего пользователя
Функция WordPress
INT 2.5.0
WordPress Icon

Описание функции

Функция wp_logout() используется для выхода текущего пользователя из системы WordPress.

Эта функция выполняет следующие действия:

  • Удаляет все данные аутентификации текущего пользователя, включая его идентификатор, имя пользователя и другие связанные данные.
  • Удаляет все сессионные данные, связанные с текущим пользователем.
  • Устанавливает текущего пользователя в значение «0», что означает, что пользователь не аутентифицирован.
  • Удаляет куки аутентификации, связанные с текущим пользователем.
  • Вызывает хук wp_logout, который позволяет другим плагинам или темам выполнить дополнительные действия при выходе пользователя.

Функция wp_logout() не принимает никаких аргументов.

После вызова функции wp_logout() текущий пользователь будет выведен из системы и перенаправлен на страницу входа.

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

Выход пользователя из системы


/**
 * Logs the current user out.
 *
 * @since 2.5.0
 */
function wp_logout() {
    wp_destroy_current_session();
    wp_clear_auth_cookie();
    do_action('wp_logout');
}

Функция wp_logout() используется для выхода текущего пользователя из системы. Она вызывает функции wp_destroy_current_session() и wp_clear_auth_cookie(), а также выполняет хук wp_logout.

Перенаправление после выхода


/**
 * Logs the current user out and redirects to the specified URL.
 *
 * @since 2.5.0
 *
 * @param string $redirect Optional. URL to redirect to after logout.
 */
function wp_logout($redirect = '') {
    wp_destroy_current_session();
    wp_clear_auth_cookie();
    do_action('wp_logout');
    
    if ( ! empty($redirect) ) {
        wp_safe_redirect($redirect);
        exit;
    }
}

Функция wp_logout() может принимать параметр $redirect, который указывает URL для перенаправления после выхода пользователя. Если параметр не пустой, то происходит безопасное перенаправление на указанный URL с помощью функции wp_safe_redirect().

Очистка данных пользователя


/**
 * Logs the current user out and clears all user-related data.
 *
 * @since 2.5.0
 */
function wp_logout() {
    wp_destroy_current_session();
    wp_clear_auth_cookie();
    do_action('wp_logout');
    
    wp_clear_current_user_cache();
    wp_clear_auth_cookie();
    wp_set_current_user(0);
}

Функция wp_logout() также очищает все данные, связанные с пользователем. Она вызывает функции wp_clear_current_user_cache(), wp_clear_auth_cookie() и wp_set_current_user(0). Это позволяет полностью очистить данные пользователя и установить текущего пользователя в значение «0».

Изменение сообщения об успешном выходе


/**
 * Logs the current user out and displays a custom logout message.
 *
 * @since 2.5.0
 *
 * @param string $message Optional. Custom message to display after logout.
 */
function wp_logout($message = '') {
    wp_destroy_current_session();
    wp_clear_auth_cookie();
    do_action('wp_logout');
    
    if ( ! empty($message) ) {
        echo $message;
    }
}

Функция wp_logout() может принимать параметр $message, который позволяет задать пользовательское сообщение, которое будет отображаться после выхода пользователя. Если параметр не пустой, то сообщение будет выведено с помощью функции echo.

Вопросы и ответы

Как разлогинить пользователя в WordPress?

Для разлогинивания пользователя в WordPress используется функция wp_logout().

wp_logout();

Как проверить, что пользователь успешно разлогинился?

Для проверки успешного разлогинивания пользователя можно использовать функцию is_user_logged_in().

$is_logged_in = is_user_logged_in();
if (!$is_logged_in) {
    echo 'Пользователь успешно разлогинился.';
}

Можно ли изменить сообщение об успешном разлогинивании?

Да, сообщение об успешном разлогинивании можно изменить с помощью фильтра logout_message.

function custom_logout_message() {
    return 'Вы успешно разлогинились.';
}
add_filter('logout_message', 'custom_logout_message');

Как перенаправить пользователя после разлогинивания?

Для перенаправления пользователя после разлогинивания можно использовать фильтр logout_redirect.

function custom_logout_redirect($redirect_to, $requested_redirect_to, $user) {
    return home_url('/custom-page/');
}
add_filter('logout_redirect', 'custom_logout_redirect', 10, 3);

Как добавить дополнительные действия при разлогинивании пользователя?

Функция wp_logout() позволяет разлогинить текущего пользователя. Если вы хотите добавить дополнительные действия при разлогинивании пользователя, вы можете использовать хук wp_logout.

// Добавляем дополнительные действия при разлогинивании пользователя
add_action( 'wp_logout', 'my_custom_logout_action' );
function my_custom_logout_action() {
    // Ваш код здесь
}

Как разлогинить пользователя только на определенной странице?

Если вам нужно разлогинить пользователя только на определенной странице, вы можете использовать хук template_redirect и проверить условие для этой страницы.

// Разлогиниваем пользователя только на странице с ID 42
add_action( 'template_redirect', 'my_custom_logout_on_page' );
function my_custom_logout_on_page() {
    if ( is_page( 42 ) ) {
        wp_logout();
    }
}

Как разлогинить пользователя автоматически после определенного времени бездействия?

Для автоматического разлогинивания пользователя после определенного времени бездействия вы можете использовать фильтр auth_cookie_expiration.

// Устанавливаем время бездействия в 30 минут
add_filter( 'auth_cookie_expiration', 'my_custom_logout_timeout' );
function my_custom_logout_timeout( $expiration ) {
    return 1800; // 30 минут в секундах
}

Можно ли разлогинить пользователя с помощью AJAX?

Да, вы можете разлогинить пользователя с помощью AJAX. Для этого вы можете создать свою AJAX-функцию и вызвать wp_logout() внутри нее.

// AJAX-обработчик для разлогинивания пользователя
add_action( 'wp_ajax_my_custom_logout', 'my_custom_logout_ajax' );
add_action( 'wp_ajax_nopriv_my_custom_logout', 'my_custom_logout_ajax' );
function my_custom_logout_ajax() {
    wp_logout();
    wp_send_json_success();
}

Функция wp_logout() позволяет разлогинить текущего пользователя. Вы можете добавить дополнительные действия при разлогинивании пользователя с помощью хука wp_logout. Также вы можете разлогинить пользователя только на определенной странице, автоматически после определенного времени бездействия или с помощью AJAX.

Связанные элементы

  • Функция wp_loginout(): Выводит ссылку на вход или выход из системы, в зависимости от статуса пользователя.
  • Функция wp_get_current_user(): Возвращает объект текущего пользователя.
  • Функция wp_set_auth_cookie(): Устанавливает аутентификационные куки для пользователя.
  • Функция wp_clear_auth_cookie(): Удаляет аутентификационные куки пользователя.
  • Функция wp_validate_auth_cookie(): Проверяет валидность аутентификационных куки пользователя.
  • Функция wp_signon(): Аутентифицирует пользователя и устанавливает сессию.
  • Хук wp_logout: Вызывается после выхода текущего пользователя.
Обсуждение