Функция wp_logout()
выполняет выход текущего авторизованного пользователя из системы WordPress. Она удаляет текущую сессию пользователя и очищает авторизационные куки. Это полезно для создания кастомных сценариев выхода из системы, особенно когда требуется выполнить дополнительные действия при выходе пользователя, такие как перенаправление или выполнение определённого кода.
wp_logout(): void
Функция не принимает параметров и не возвращает значений. После её вызова пользователь больше не будет считаться авторизованным.
Как работает
При вызове wp_logout()
происходят следующие действия:
- Завершается текущий сеанс пользователя.
- Очищаются куки, ответственные за авторизацию.
- Пользователь полностью деавторизуется.
Для выполнения авторизации используется функция wp_signon()
, если необходимо, чтобы пользователь вошел в систему снова после вызова wp_logout()
.
Особенности использования
wp_logout()
является pluggable-функцией, что означает, что она может быть переопределена через плагин. Это значит, что при разработке плагинов её вызов должен быть выполнен после инициализации всех плагинов, например, через хук plugins_loaded
.
Пример базового использования
<?php wp_logout(); ?>
Этот код просто завершает сессию пользователя и выходит из системы.
Пример использования с условием выхода
Допустим, вам нужно выйти из системы, если в URL указан параметр logout
. Это можно реализовать следующим образом:
if ( isset( $_GET['logout'] ) ) {
wp_logout();
wp_safe_redirect( home_url() );
exit;
}
В данном примере проверяется наличие параметра logout
в URL, и если он присутствует, пользователь деавторизуется и перенаправляется на главную страницу сайта.
Пример перенаправления после выхода пользователя в зависимости от его роли
Вы можете перенаправлять пользователей на разные страницы после выхода из системы в зависимости от их роли. Например, можно перенаправить подписчиков на главную страницу, а администраторов — на страницу входа.
function wpdocs_redirect_after_logout() {
$current_user = wp_get_current_user();
if ( isset( $current_user->roles[0] ) ) {
$role_name = $current_user->roles[0];
if ( 'subscriber' === $role_name ) {
$redirect_url = site_url(); // Перенаправление на главную страницу
} else {
$redirect_url = wp_login_url(); // Перенаправление на страницу входа
}
wp_safe_redirect( $redirect_url );
exit;
}
}
add_action( 'wp_logout', 'wpdocs_redirect_after_logout' );
Этот код проверяет роль пользователя перед выходом из системы и перенаправляет его на разные страницы в зависимости от его роли.
Хуки, связанные с wp_logout()
wp_logout
— этот хук позволяет вам выполнять дополнительные действия сразу после того, как пользователь выходит из системы. Например, можно записывать данные в лог или очищать сессии.
Пример:
function custom_action_after_logout() {
// Выполнить действия после выхода
error_log( 'Пользователь вышел из системы.' );
}
add_action( 'wp_logout', 'custom_action_after_logout' );
Основные функции, используемые в wp_logout()
wp_destroy_current_session()
— разрушает текущую сессию пользователя.wp_clear_auth_cookie()
— очищает куки, которые используются для авторизации.
Заключение
Функция wp_logout()
предоставляет удобный способ для безопасного выхода пользователей из системы WordPress. Она гибкая и может быть дополнена различными кастомными сценариями через хуки и условия, что делает её незаменимым инструментом для реализации пользовательских функций выхода.