Хук login_redirect
позволяет задать URL-адрес для перенаправления пользователей после успешной авторизации на сайте. В зависимости от роли пользователя, типа учетной записи или других условий можно перенаправить его на различные страницы, такие как главная страница, личный кабинет или административная панель.
Хук login_redirect
фильтрует URL, на который пользователь будет перенаправлен после входа. Он принимает три параметра:
$redirect_to
— URL, на который по умолчанию будет направлен пользователь.$requested_redirect_to
— URL, переданный через параметрredirect_to
(если был указан).$user
— объектWP_User
, если вход выполнен успешно, или объектWP_Error
, если возникла ошибка.
apply_filters( 'login_redirect', string $redirect_to, string $requested_redirect_to, WP_User|WP_Error $user );
Пример 1: Перенаправление в зависимости от роли пользователя
В этом примере администраторы будут перенаправлены в административную панель, а все остальные пользователи — на главную страницу сайта.
add_filter( 'login_redirect', 'custom_redirect_based_on_role', 10, 3 );
function custom_redirect_based_on_role( $redirect_to, $requested_redirect_to, $user ) {
if ( isset( $user->roles ) && is_array( $user->roles ) ) {
// Если пользователь администратор, перенаправить на панель управления
if ( in_array( 'administrator', $user->roles ) ) {
return admin_url();
} else {
return home_url(); // Остальные пользователи перенаправляются на главную
}
}
return $redirect_to;
}
Пример 2: Перенаправление всех пользователей на страницу профиля
Если требуется перенаправить всех пользователей на страницу профиля после входа, можно использовать следующий код:
add_filter( 'login_redirect', 'redirect_to_profile_page', 10, 3 );
function redirect_to_profile_page( $redirect_to, $requested_redirect_to, $user ) {
return home_url('/profile'); // Замените '/profile' на нужный URL страницы профиля
}
Пример 3: Перенаправление на страницу приветствия для новых пользователей
Этот пример проверяет, является ли пользователь новым, и, если да, перенаправляет его на специальную страницу приветствия.
add_filter( 'login_redirect', 'welcome_new_users_redirect', 10, 3 );
function welcome_new_users_redirect( $redirect_to, $requested_redirect_to, $user ) {
if ( get_user_meta( $user->ID, 'first_login', true ) == 'yes' ) {
update_user_meta( $user->ID, 'first_login', 'no' ); // Обновляем мету после первого входа
return home_url('/welcome'); // URL страницы приветствия
}
return $redirect_to;
}
Примечание: Для работы данного примера необходимо добавить пользовательское метаполе
first_login
при регистрации нового пользователя.
Пример 4: Перенаправление на страницу исходя из переданного URL
Этот код позволяет перенаправить пользователя на запрошенный URL (если он указан), или на домашнюю страницу, если параметр redirect_to
отсутствует.
add_filter( 'login_redirect', 'custom_login_redirect_based_on_request', 10, 3 );
function custom_login_redirect_based_on_request( $redirect_to, $requested_redirect_to, $user ) {
if ( ! empty( $requested_redirect_to ) ) {
return $requested_redirect_to; // Перенаправление на запрошенный URL
}
return home_url(); // Перенаправление на главную страницу, если URL не указан
}
Заключение
Хук login_redirect
в WordPress предоставляет гибкие возможности для настройки перенаправлений после авторизации. Вы можете использовать его для улучшения удобства пользователей, направляя их на подходящие страницы в зависимости от роли или других условий.