Функция auth_redirect()
используется для проверки, авторизован ли пользователь на сайте WordPress. Если пользователь не вошёл в систему, его перенаправляют на страницу авторизации. После успешной авторизации, пользователь возвращается на ту страницу, с которой он был перенаправлен.
Эта функция полезна для защиты контента, доступного только авторизованным пользователям, например, личных кабинетов, страниц с закрытым доступом, форм управления и т.д.
auth_redirect(): void
Функция не принимает никаких параметров и не возвращает значений. Она автоматически проверяет текущего пользователя и выполняет перенаправление, если это необходимо.
Как работает
- Если пользователь авторизован, функция ничего не делает, и страница загружается как обычно.
- Если пользователь не авторизован, вызывается перенаправление на страницу авторизации. После успешного входа в систему, пользователь возвращается на ту же страницу, с которой его перенаправили.
Пример 1: Закрытие доступа к отдельной странице
Чтобы закрыть страницу от неавторизованных пользователей, можно использовать следующий код:
if ( ! is_user_logged_in() ) {
auth_redirect();
}
Этот код проверяет, авторизован ли пользователь. Если нет, его перенаправляют на страницу входа в систему.
Пример 2: Закрытие доступа к постам
Допустим, вы хотите ограничить доступ к одиночным постам для неавторизованных пользователей. Это можно сделать, добавив следующий код в файл header.php
или в шаблон, где выводятся посты:
if ( is_single() ) {
auth_redirect();
}
Таким образом, каждый пост будет защищён, и только авторизованные пользователи смогут его просматривать.
Пример 3: Закрытие всех страниц сайта для неавторизованных пользователей
Вы можете добавить следующую проверку в файл functions.php
, чтобы закрыть все страницы сайта для неавторизованных пользователей:
add_action( 'template_redirect', function() {
if ( ! is_user_logged_in() && ! is_page( 'login' ) ) {
auth_redirect();
}
});
Этот код перенаправит всех неавторизованных пользователей на страницу входа, кроме тех, кто пытается открыть страницу авторизации (например, /login
).
Особенности использования
- Переадресация после входа: Если пользователь не авторизован и перенаправляется на страницу входа, после успешной авторизации он автоматически вернётся на ту страницу, с которой был перенаправлен.
- Pluggable-функция:
auth_redirect()
— это pluggable-функция, которая может быть заменена через плагин. Поскольку она является заменяемой, её вызов должен происходить после инициализации всех плагинов через хукplugins_loaded
или позднее.
Хуки, связанные с auth_redirect()
secure_auth_redirect
: Этот хук вызывается при выполнении защищённой переадресации.auth_redirect_scheme
: Используется для указания схемы аутентификации (обычной или защищённой).auth_redirect
: Выполняется перед вызовом функцииauth_redirect()
.
Пример использования с хуком
Вы можете дополнительно настроить логику авторизации с помощью хука auth_redirect
. Например, если вы хотите записывать события выхода на страницу авторизации в лог-файл:
add_action( 'auth_redirect', function() {
error_log( 'Пользователь был перенаправлен на страницу авторизации.' );
});
Основные функции, используемые внутри auth_redirect()
is_user_logged_in()
: Проверяет, авторизован ли текущий пользователь.wp_redirect()
: Перенаправляет пользователя на заданный URL (в данном случае, на страницу входа).
Заключение
Функция auth_redirect()
— это простой и эффективный способ ограничения доступа к страницам WordPress для неавторизованных пользователей. Она легко настраивается через хуки и используется для создания страниц с защищённым доступом.