В WordPress часто возникает задача настроить автоматическую переадресацию пользователей в зависимости от различных условий: роли пользователя, типа устройства, источника трафика или других параметров. В этой статье подробно разберём, как реализовать условные редиректы с помощью PHP-кода в functions.php и популярных плагинов, а также приведём примеры, которые помогут вам быстро внедрить нужную логику на вашем сайте.
Зачем нужны условные переадресации в WordPress
Переадресация помогает управлять пользовательским опытом и направлять посетителей на релевантные страницы. Например, вы можете:
- Перенаправлять неавторизованных пользователей на страницу входа;
- Отправлять мобильных посетителей на адаптивную версию сайта или приложение;
- Направлять пользователей с определённых реферальных сайтов на специальные акции;
- Перенаправлять по ролям, например, администраторов на панель управления, а клиентов на личный кабинет;
- Реализовывать редиректы после действий, например, после успешной регистрации.
С помощью правильной реализации вы улучшите конверсию, безопасность и удобство сайта.
Реализация условных редиректов через functions.php
Чтобы добавить условный редирект, можно использовать хук template_redirect. Он срабатывает перед загрузкой шаблона страницы, что позволяет выполнить переадресацию вовремя.
Пример 1. Редирект неавторизованных пользователей на страницу входа
function wpqa_conditional_redirect_to_login() {
if ( ! is_user_logged_in() && ! is_page('login') ) {
wp_redirect( wp_login_url() );
exit;
}
}
add_action('template_redirect', 'wpqa_conditional_redirect_to_login');
Этот код проверяет, авторизован ли пользователь. Если нет, и он не находится уже на странице входа, происходит перенаправление.
Пример 2. Редирект мобильных пользователей
Для определения устройства можно использовать класс Mobile_Detect или простое регулярное выражение по агенту пользователя. Ниже пример с регулярным выражением:
function wpqa_redirect_mobile_users() {
if ( wp_is_mobile() && ! is_page('mobile-version') ) {
wp_redirect( site_url('/mobile-version') );
exit;
}
}
add_action('template_redirect', 'wpqa_redirect_mobile_users');
Функция wp_is_mobile() — встроенная в WordPress и позволяет определить мобильное устройство.
Использование популярных плагинов для условных редиректов
Если вы не хотите писать код, есть несколько проверенных плагинов для условного редиректа, которые поддерживают сложную логику и просты в настройке.
Redirection
Один из самых популярных плагинов для управления редиректами. Позволяет создавать правила с условиями, например, по URL, роли пользователя, статусу входа.
Для расширенной логики можно применять регулярные выражения и фильтры.
Conditional Redirects
Плагин специально для условных редиректов с возможностью настройки по ролям, IP-адресам, пользовательским агентам и др.
WPGPT для автоматизации редиректов
Если вы используете WPGPT, можно автоматизировать генерацию кода для редиректов с помощью искусственного интеллекта, что значительно ускорит процесс настройки сложных условий.
Примеры сложных условных редиректов с кодом
Редирект по роли пользователя и URL
Допустим, хотим перенаправлять пользователей с ролью 'subscriber' на страницу подписки, если они заходят на определённую страницу:
function wpqa_redirect_subscribers_specific_page() {
if ( is_page('special-offer') ) {
$user = wp_get_current_user();
if ( in_array('subscriber', (array) $user->roles) ) {
wp_redirect( site_url('/subscribe-now') );
exit;
}
}
}
add_action('template_redirect', 'wpqa_redirect_subscribers_specific_page');
Редирект с проверкой источника перехода (реферала)
Можно направлять посетителей с определённых сайтов на целевые страницы:
function wpqa_redirect_by_referer() {
if ( isset($_SERVER['HTTP_REFERER']) ) {
$referer = $_SERVER['HTTP_REFERER'];
if ( strpos($referer, 'facebook.com') !== false ) {
wp_redirect( site_url('/facebook-landing') );
exit;
}
}
}
add_action('template_redirect', 'wpqa_redirect_by_referer');
Советы по правильной организации редиректов
Чтобы избежать проблем с SEO и пользовательским опытом, следуйте рекомендациям:
- Используйте редиректы 301 для постоянных изменений, 302 для временных;
- Не создавайте циклических или множественных редиректов;
- Проверяйте условия, чтобы редирект не мешал загрузке админки и важных страниц;
- Тестируйте редиректы в разных браузерах и с учётом кэша;
- Для сложных сценариев лучше использовать специализированные плагины или генераторы кода.
Заключение
Условные редиректы — мощный инструмент для управления поведением посетителей на сайте WordPress. С помощью хука template_redirect и нескольких строк кода можно реализовать самые разные сценарии, а плагины помогут без программирования. Не забывайте, что правильная настройка повышает удобство и эффективность сайта.