Редиректы в WordPress — частая задача, особенно когда нужно направлять пользователей на разные страницы в зависимости от условий: роли пользователя, устройства, источника трафика или других параметров. В этой статье разберём, как реализовать условные редиректы с помощью кода и популярных плагинов, а также рассмотрим лучшие практики, чтобы не навредить SEO и не потерять пользователей.
Почему важны условные редиректы в WordPress
Условные редиректы позволяют гибко управлять поведением сайта. Например, можно сделать так, чтобы новые пользователи попадали на страницу приветствия, а авторизованные — на личный кабинет. Или настроить редирект мобильных пользователей на адаптивную версию сайта. Это улучшает пользовательский опыт и повышает конверсию.
Безусловные редиректы (например, с http на https) просты, но не подходят для сложной логики. Для этого нужны именно условные редиректы.
Как сделать условный редирект с помощью кода в functions.php
Самый лёгкий способ — добавить условный редирект в файл functions.php вашей темы или в собственный плагин. Вот простой пример, который перенаправляет неавторизованных пользователей на страницу логина, если они пытаются зайти в админ-панель:
function wp_kurs_redirect_non_logged_users() {
if (is_admin() && !is_user_logged_in()) {
wp_redirect(wp_login_url());
exit;
}
}
add_action('init', 'wp_kurs_redirect_non_logged_users');Этот код проверяет, находится ли пользователь в админке и авторизован ли он, и если нет — перенаправляет на страницу входа.
Пример условного редиректа по роли пользователя
Допустим, хотим, чтобы пользователи с ролью subscriber при заходе на главную страницу попадали на страницу приветствия /welcome/. Тогда код будет таким:
function wp_kurs_redirect_subscribers() {
if (is_front_page()) {
$user = wp_get_current_user();
if (in_array('subscriber', (array) $user->roles)) {
wp_redirect(site_url('/welcome/'));
exit;
}
}
}
add_action('template_redirect', 'wp_kurs_redirect_subscribers');Этот фрагмент стоит добавлять аккуратно и тестировать, чтобы не создать циклы редиректов.
Условные редиректы в зависимости от устройства
Иногда нужно перенаправлять мобильных пользователей на отдельную мобильную версию или лендинг. Для этого пригодится классический PHP-библиотека Mobile Detect. В WordPress её можно подключить так:
require_once get_template_directory() . '/mobile-detect/Mobile_Detect.php';
function wp_kurs_redirect_mobile() {
if (!is_admin()) {
$detect = new Mobile_Detect();
if ($detect->isMobile() && !is_page('mobile-version')) {
wp_redirect(site_url('/mobile-version/'));
exit;
}
}
}
add_action('template_redirect', 'wp_kurs_redirect_mobile');Здесь мы подключаем библиотеку, проверяем устройство и делаем редирект, если пользователь зашёл с мобильного и не на странице мобильной версии.
Плагины для условных редиректов в WordPress
Для тех, кто не хочет писать код, есть несколько мощных плагинов:
- Redirection — один из самых популярных, позволяет создавать редиректы с условием, учитывать роли пользователей и источники переходов. Подробнее на WPSHOP.
- Safe Redirect Manager — простой, но функциональный плагин с поддержкой регулярных выражений и условий.
- Conditional Redirects for Logged-in Users — специально для редиректов по ролям и статусу авторизации.
Использование плагинов удобно, если нужно быстро настроить правила без погружения в код. Но они могут немного замедлять сайт, поэтому для сложной логики лучше сделать кастомное решение.
Как избежать ошибок и проблем с SEO при редиректах
При настройке условных редиректов важно помнить несколько правил:
- Всегда используйте статус HTTP 301 для постоянных редиректов, 302 — для временных.
- Проверяйте, чтобы не было циклов редиректов, иначе браузер выдаст ошибку.
- Тестируйте редиректы в разных условиях (авторизован/гость, разные устройства).
- Не перенаправляйте поисковых ботов без веских причин, чтобы не навредить индексации.
Для установки кода с редиректами рекомендуем делать это в дочерней теме или собственном плагине, чтобы не потерять изменения при обновлении.
Пример расширенного условного редиректа с параметрами URL
Иногда нужно перенаправлять пользователей в зависимости от параметров в URL. Вот пример, который проверяет наличие параметра ref и делает редирект на страницу акции:
function wp_kurs_redirect_by_url_param() {
if (isset($_GET['ref']) && $_GET['ref'] === 'promo2024') {
wp_redirect(site_url('/special-offer/'));
exit;
}
}
add_action('template_redirect', 'wp_kurs_redirect_by_url_param');Это удобно для маркетинговых кампаний и отслеживания трафика.
Итоги по условным редиректам в WordPress
Условные редиректы позволяют тонко настроить поведение сайта под разные сценарии. Используйте код для максимальной гибкости и плагины для удобства. Обязательно тестируйте и следите за SEO, чтобы не навредить позициям сайта.
Для более продвинутых решений обратите внимание на плагины с поддержкой API и интеграции с другими инструментами, например WPRemark, который позволяет автоматизировать обновление контента и может быть использован вместе с редиректами.