Автоматический редирект в WordPress — одна из частых задач, когда нужно перенаправить пользователя на другую страницу в зависимости от определённых условий. Это может пригодиться для сегментации трафика, управления доступом, SEO-оптимизации и других целей. В этой статье подробно разберём, как сделать условные редиректы в WordPress, используя код и плагины.
Зачем нужны условные редиректы в WordPress
Редиректы по условиям позволяют гибко управлять поведением сайта. Например:
- Перенаправлять пользователей с мобильных устройств на мобильную версию сайта.
- Отправлять новых посетителей на страницу приветствия или акции.
- Перенаправлять пользователей из определённых стран на локализованные страницы.
- Блокировать доступ к страницам для неавторизованных пользователей через редирект на страницу входа.
Реализация таких сценариев помогает улучшить UX, повысить конверсию и оптимизировать работу сайта.
Как сделать условный редирект через functions.php
Самый лёгкий способ — добавить функцию в файл functions.php вашей темы или в кастомный плагин. Ниже пример функции с префиксом wplike_, которая перенаправляет всех неавторизованных пользователей с главной страницы на страницу входа.
function wplike_conditional_redirect() {
if (is_front_page() && !is_user_logged_in()) {
wp_redirect(wp_login_url());
exit;
}
}
add_action('template_redirect', 'wplike_conditional_redirect');В этом примере мы использовали хук template_redirect, который срабатывает перед загрузкой шаблона. Функция проверяет, что пользователь на главной странице и не авторизован, после чего делает редирект на стандартную страницу входа WordPress.
Пример редиректа по геолокации
Для более сложных условий, например, редиректа по стране, понадобится дополнительная библиотека для определения IP-адреса. Ниже пример с использованием плагина GeoIP Detection.
function wplike_geo_redirect() {
if (!is_user_logged_in()) {
$country = geoip_detect2_get_info_from_current_ip()->country->isoCode;
if ($country === 'RU') {
wp_redirect(home_url('/ru/'));
exit;
} elseif ($country === 'US') {
wp_redirect(home_url('/en/'));
exit;
}
}
}
add_action('template_redirect', 'wplike_geo_redirect');Для работы этого кода нужно установить и активировать плагин GeoIP Detection. Он предоставляет функцию geoip_detect2_get_info_from_current_ip() для получения информации о стране посетителя.
Использование плагинов для условного редиректа
Если не хочется писать код, можно использовать готовые плагины с графическим интерфейсом:
- Redirection — популярный плагин для управления редиректами. Позволяет создавать редиректы с условиями на основе URL, реферера, устройства.
- Conditional Redirects — плагин, позволяющий создавать правила редиректов с разными условиями, включая статус пользователя, тип устройства и т.д.
- WPConditionals Redirect — более продвинутый плагин с поддержкой сложных условий и пользовательских правил.
Все эти плагины можно найти и установить через репозиторий WordPress или через https://wpshop.ru/plugins/.
Пример настройки редиректа с помощью плагина Redirection
После установки плагина:
- Перейдите в меню «Инструменты» → «Redirection».
- Добавьте новое правило редиректа.
- В поле источника укажите URL или регулярное выражение.
- В разделе «Условия» выберите условия, например, устройство или роль пользователя.
- В поле назначения укажите страницу для редиректа.
Плагин позволяет гибко настраивать условия и просматривать статистику редиректов.
Автоматизация редиректов через WP Cron
Иногда нужно делать редиректы или менять правила динамически, например, при акциях или изменении условий во времени. Для этого можно использовать WP Cron — встроенный планировщик задач в WordPress.
Пример задачи, которая меняет URL редиректа через заданный интервал:
function wplike_schedule_redirect_update() {
if (!wp_next_scheduled('wplike_update_redirect_rule')) {
wp_schedule_event(time(), 'hourly', 'wplike_update_redirect_rule');
}
}
add_action('wp', 'wplike_schedule_redirect_update');
function wplike_update_redirect_rule_callback() {
// Логика обновления условий редиректа
// Например, включить/отключить редирект в зависимости от даты
}
add_action('wplike_update_redirect_rule', 'wplike_update_redirect_rule_callback');Такой подход позволяет динамически менять логику редиректов без ручного вмешательства.
Советы по отладке и оптимизации редиректов
Чтобы избежать проблем с циклическими редиректами и потерей SEO, следуйте рекомендациям:
- Всегда используйте
exit;послеwp_redirect(), чтобы остановить выполнение скрипта. - Тестируйте редиректы в разных браузерах и с разными учетными записями.
- Не создавайте слишком сложных условий, чтобы не замедлять загрузку страниц.
- Используйте плагины кеширования с поддержкой исключений для страниц с редиректами.
Если вам нужны дополнительные инструменты для оптимизации и настройки WordPress, обратите внимание на Clearfy Pro — мощный плагин для оптимизации и управления сайтом.