В этой статье разберём, как реализовать автоматическую переадресацию (редирект) на сайте WordPress в зависимости от различных условий. Это полезно, когда нужно перенаправлять посетителей на разные страницы в зависимости от устройства, роли пользователя, даты или других параметров. Рассмотрим несколько реальных сценариев и приведём примеры кода, которые можно использовать в вашем шаблоне или плагине.
Что такое переадресация в WordPress и зачем она нужна
Переадресация — это перенаправление пользователя с одного URL на другой. В WordPress она часто используется для:
- Обновления структуры сайта без потери трафика
- Перенаправления мобильных пользователей на мобильную версию
- Ограничения доступа к определённым страницам в зависимости от роли пользователя
- Реализации маркетинговых акций с временными редиректами
Хотя существует множество плагинов для редиректов, иногда требуется более гибкий и точечный подход с кастомными условиями и логикой. Для этого идеально подходит код на PHP, который можно добавить в файл functions.php вашей темы или в собственный плагин.
Как реализовать редирект по типу устройства: мобильный и десктоп
Один из популярных кейсов — отправлять мобильных посетителей на отдельную мобильную версию сайта или страницу.
Для этого можно использовать PHP-библиотеку Mobile Detect. Пример использования:
require_once get_template_directory() . '/inc/Mobile_Detect.php';
function wptool_mobile_redirect() {
if (is_admin()) return; // не редиректить в админке
$detect = new Mobile_Detect;
if ($detect->isMobile() && ! $detect->isTablet()) {
wp_redirect(home_url('/mobi-version/'), 302);
exit;
}
}
add_action('template_redirect', 'wptool_mobile_redirect');
Здесь Mobile_Detect.php нужно добавить в папку inc вашей темы. Этот код проверяет, что пользователь зашёл с мобильного устройства (без планшета) и перенаправляет его на страницу /mobi-version/.
Альтернативы: плагины для мобильных редиректов
Если не хочется возиться с кодом, можно использовать плагины, например:
- Any Mobile Theme Switcher — переключает тему по устройству.
- Redirection — мощный менеджер редиректов с условными правилами.
Редирект по роли пользователя: как перенаправлять администраторов и подписчиков
Иногда нужно показывать разный контент или страницы в зависимости от роли пользователя. Например, при входе подписчиков отправлять на страницу профиля, а администраторов — на панель управления.
Пример кода для автоматического редиректа после входа пользователя:
function wptool_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('subscriber', $user->roles)) {
return home_url('/profile/');
}
}
return $redirect_to;
}
add_filter('login_redirect', 'wptool_redirect_after_login', 10, 3);
Этот фильтр перехватывает стандартный редирект после входа и перенаправляет пользователя в зависимости от роли.
Другие варианты использования ролей для редиректов
Можно добавлять редиректы и на фронтенде, например, если гость пытается зайти на страницу, доступную только для авторизованных пользователей. Проверка и редирект:
function wptool_protect_page_redirect() {
if (is_page('premium-content') && !is_user_logged_in()) {
wp_redirect(wp_login_url(get_permalink()));
exit;
}
}
add_action('template_redirect', 'wptool_protect_page_redirect');
Условный редирект по дате или времени: как сделать временные акции и события
Реализуем редирект на специальную страницу акции в заданный период, например, с 1 по 10 июля.
Пример кода:
function wptool_date_based_redirect() {
if (is_front_page()) {
$start = strtotime('2024-07-01');
$end = strtotime('2024-07-10 23:59:59');
$now = current_time('timestamp');
if ($now >= $start && $now <= $end) {
wp_redirect(home_url('/summer-sale/'), 302);
exit;
}
}
}
add_action('template_redirect', 'wptool_date_based_redirect');
Такой код перенаправит посетителей главной страницы на страницу акции в нужные даты.
Автоматизация с плагинами
Для более сложных условий можно использовать плагин Clearfy Pro, который поддерживает управление редиректами и настройку условий без кода.
Как избежать проблем с переадресациями и SEO рекомендации
При настройке редиректов важно избегать циклов и излишних перенаправлений, чтобы не ухудшить SEO и не замедлить сайт.
- Используйте правильные коды статуса: 301 — постоянный редирект, 302 — временный.
- Проверяйте, что в коде вызывается
exit;сразу послеwp_redirect(), чтобы скрипт не выполнялся дальше. - Тестируйте редиректы на разных устройствах и ролях.
- Не делайте слишком много условий в одном хуке — разбивайте логику для удобства поддержки.
Выводы и практические советы
Автоматические переадресации в WordPress — мощный инструмент для точной настройки поведения сайта под нужды бизнеса или проекта. С помощью PHP-кода вы можете реализовать любые условия, которые не всегда доступны в плагинах.
Если хотите упростить задачу, попробуйте подключить плагин Clearfy Pro, который поможет управлять редиректами и оптимизировать сайт без сложного программирования.