Нужно перенаправить пользователя на определенную страницу WordPress после входа? По умолчанию система перенаправляет на панель мониторинга (Консоль) или в раздел его профиля. Посмотрим 2 способа, как лекго изменить это поведения.
Зачем перенаправлять после авторизации?
Часто на сайтах со сложной структурой от пользователя требуются определенные действия после входа в систему. Например, в интернет-магазине после нажатия кнопки Купить и авторизации, он должен быть перемещен в раздел оформления заказа. Аналогичная ситуация с новостными многоавторскими сайтами.
Стандартные средства ВордПресс не позволяют делать этого. Система следует четко заданной инструкции.
Разберем детально, как это сделать на любом сайте WordPress.
Метод 1. Плагин Peter’s Login Redirect
Это простой способ, который позволяет настраивать перенаправления входа в систему на основе пользовательских ролей и разрешений (см. Как добавить новую роль пользователя в WordPress).
Для начала установите и активируйте Peter’s Login Redirect.
Дальше в админке перейдите Настройки > Login/logout redirects.
Опции позволяют настроить перенаправления для конкретных ситуаций:
- пользователи,
- роли,
- уровни доступа.
Для примера будем перенаправлять всех вошедших в систему пользователей с ролью Редактор в админ-раздел Записи.
Для этого найдите раздел Роли, в опции Добавить выберите editor, задайте URL-ссылку в поле Ссылка входа и нажмите кнопку Добавить правило роли.
Опция Ссылка выхода служит для редиректа после выхода из системы.
Чтобы ваши правки сработали, кликните Обновить в самом низу.
Метод 2. Вручную с помощью PHP-кода
Этот способ сложнее. Нужно редактировать файлы темы.
Все последующие действия предполагают редактирование functions.php — основного конфигурационного файла WordPress-темы. Если вы не знаете, как редактировать этот файл, то в этом случае поможет плагин ProFunctions.
Откройте functions.php активной ВордПресс-темы на сайте и добавьте строки:
function redirect_users_after_login() { $user = wp_get_current_user(); $roles = ( array ) $user->roles; // Редирект для администраторов if ( $roles[0] == 'administrator' ) { wp_redirect( 'https://site.ru/page_for_admin' ); exit; } // Редирект для подписчиков if ( $roles[0] == 'subscriber' ) { wp_redirect( 'https://site.ru/page_for_subscriber' ); exit; } // Редирект для авторов if ( $roles[0] == 'author' ) { wp_redirect( 'https://site.ru/page_for_author' ); exit; } // Редирект для редакторов if ( $roles[0] == 'editor' ) { wp_redirect( 'https://site.ru/page_for_editor' ); exit; } } add_action( 'admin_init', 'redirect_users_after_login' );
В коде добавлены перенаправления для администраторов, подписчиков, редакторов и авторов. В функции wp_redirect() нужно вписать страницу для редиректа. Ненужные роли пользователей можно удалить.
Если система не будет перенаправлять, перейдите Настройки > Постоянные ссылки и просто нажмите кнопку Сохранить изменения.
Нажмите, пожалуйста, на одну из кнопок, чтобы узнать понравилась статья или нет.
Супер спасибо за инфу, была очень полезна!
Здравствуйте! Работает после замены хука на wp_login
add_action( ‘wp_login’, ‘redirect_users_after_login’, 20 , 2);
function redirect_users_after_login($user_login, $user) {
$role = $user->roles;
if ($role[0] == ‘wholesale_customer’) {
wp_redirect( home_url(‘/dobro-pozhalovat/’) );
exit;
}
} успешно отправляет оптовых покупателей на страницу “добро пожаловать”, но в меню сайта (создано через админку-внешний вид-меню) ссылка на главную страницу отправляет в личный кабинет пользователя! Я в недоумении, пожалуйста, подскажите, как это поправить. Спасибо!
Здравствуйте.
Возможно где-то еще прописаны перенаправления. Посмотрите среди активных плагинов.
С уважением Михаил
Спасибо большое за статью!
Но к сожалению ни плагин ни код, не заработали ((