В этой статье разберём, как организовать автоматический редирект пользователей WordPress в зависимости от их роли. Это полезно в случаях, когда нужно направлять разных пользователей на разные страницы после входа или при попытке зайти на главную страницу сайта.
Причины и задачи автоматического редиректа по ролям пользователей
В стандартном WordPress все пользователи после логина перенаправляются в админ-панель или на главную страницу. Но часто возникает задача: например, подписчиков направлять на персональный кабинет, редакторов — на страницу управления контентом, а гостей — на лендинг. Такой подход улучшает UX и помогает разграничить доступ.
Помимо редиректа после входа, можно настроить автоматический редирект при заходе на главную страницу, чтобы пользователь сразу попадал в нужный раздел.
Решение задачи можно реализовать как через плагины, так и через кастомный код в файле functions.php или в собственном плагине.
Использование популярных плагинов для редиректа по ролям
Плагин Peter’s Login Redirect
Этот плагин позволяет настраивать редиректы после логина по ролям или пользователям индивидуально. Он прост и функционален.
- Устанавливаем и активируем плагин.
- В настройках задаём правила редиректа для каждой роли.
- Проверяем работу, авторизуясь под разными ролями.
Недостаток — ограниченные возможности для редиректа при других условиях, кроме логина.
Плагин Redirection
Плагин Redirection можно использовать для создания правил с условием по ролям с помощью PHP-фильтров. Для этого потребуется добавить небольшой код, который проверит роль и выполнит редирект.
Если нужен более комплексный контроль с UI, стоит смотреть специализированные плагины, например, Clearfy Pro, где есть опции управления доступом и редиректами.
Кастомный код для автоматического редиректа по ролям
Рассмотрим пример, как реализовать автоматический редирект пользователя из frontend на основе его роли при заходе на главную страницу и после логина.
Редирект после логина
Добавьте следующий код в functions.php вашей темы или в отдельный плагин:
function wpfinder_redirect_after_login($redirect_to, $request, $user) {
if (isset($user->roles) && is_array($user->roles)) {
if (in_array('administrator', $user->roles)) {
return admin_url();
} elseif (in_array('editor', $user->roles)) {
return site_url('/editor-dashboard');
} elseif (in_array('subscriber', $user->roles)) {
return site_url('/subscriber-home');
} else {
return site_url();
}
}
return $redirect_to;
}
add_filter('login_redirect', 'wpfinder_redirect_after_login', 10, 3);В этом примере после входа администратор перенаправляется в админ-панель, редактор — на кастомную страницу /editor-dashboard, подписчик — на /subscriber-home, остальные — на главную.
Редирект при заходе на главную страницу для авторизованных пользователей
Чтобы при заходе на главную страницу сразу перекидывать пользователей в зависимости от ролей, добавьте:
function wpfinder_redirect_by_role_on_homepage() {
if (is_front_page() && is_user_logged_in()) {
$user = wp_get_current_user();
if (in_array('administrator', $user->roles)) {
wp_redirect(admin_url());
exit;
} elseif (in_array('editor', $user->roles)) {
wp_redirect(site_url('/editor-dashboard'));
exit;
} elseif (in_array('subscriber', $user->roles)) {
wp_redirect(site_url('/subscriber-home'));
exit;
}
}
}
add_action('template_redirect', 'wpfinder_redirect_by_role_on_homepage');Этот код проверяет роль пользователя при загрузке главной страницы и выполняет редирект.
Создание кастомных страниц для ролей пользователей
Чтобы редиректы были полезными, нужны целевые страницы. Вот несколько советов по созданию таких страниц:
- Используйте Custom Page Templates для оформления страниц, например editor-dashboard.php и subscriber-home.php.
- Для управления контентом и функционалом используйте кастомные шорткоды и REST API.
- Можно применить плагин WPCommunity для создания закрытых сообществ или личных кабинетов.
- Для упрощения работы с правами пользователей отлично подходит Clearfy Pro, где можно гибко настроить роли и доступ.
Особенности и подводные камни автоматических редиректов по ролям
При реализации редиректов стоит учесть несколько важных моментов:
- Редиректы должны выполняться до отправки заголовков, поэтому используйте хук
template_redirectили фильтрlogin_redirect. - Избегайте циклических редиректов, проверяя условия и пути.
- Проверяйте, что целевые страницы доступны и корректно настроены.
- Учитывайте, что некоторые плагины безопасности могут блокировать редиректы или изменять поведение логина.
- Проводите тестирование под разными ролями, чтобы не потерять доступ к важным разделам.
Выводы и рекомендации
Автоматический редирект по ролям в WordPress — мощный инструмент для кастомизации пользовательского опыта. Он позволяет направлять пользователей на релевантные страницы, повышая удобство и безопасность.
Для простых задач достаточно использовать популярные плагины, а для тонкой настройки — писать собственный код. В сочетании с плагинами из WPShop можно создавать мощные решения для любых сайтов на WordPress.