Как создать автоматический редирект в WordPress по условиям

Автоматические редиректы в WordPress — важный инструмент для управления трафиком сайта, улучшения SEO и повышения удобства пользователей. В этой статье рассмотрим, как реализовать условные редиректы с помощью кода и плагинов, а также разберемся с типичными кейсами, когда они нужны.

Зачем нужны условные редиректы в WordPress

Редиректы позволяют перенаправлять посетителей с одной страницы на другую. Примеры ситуаций:

  • Перенос контента на новый URL после изменения структуры сайта.
  • Редирект пользователей в зависимости от их роли или авторизации.
  • Перенаправление на мобильную версию сайта.
  • Редиректы по геолокации для региональных сайтов.
  • Защита устаревших страниц с ошибкой 404, направляя на релевантные разделы.

Безусловные редиректы просты, но условия дают большую гибкость и позволяют делать перенаправления более точными и полезными.

Как создать условный редирект через functions.php

Самый легкий способ — добавить код в файл functions.php активной темы или лучше — в кастомный плагин, чтобы не потерять изменения при обновлении темы.

Пример: перенаправить всех неавторизованных пользователей с /private-page/ на страницу входа.

function wpstuff_redirect_non_logged_users() {
    if ( !is_user_logged_in() && is_page('private-page') ) {
        wp_redirect(wp_login_url());
        exit;
    }
}
add_action('template_redirect', 'wpstuff_redirect_non_logged_users');

Здесь мы используем хук template_redirect, который срабатывает до загрузки шаблона страницы, и функцию wp_redirect() для перенаправления.

Редирект по роли пользователя

Иногда нужно отправлять пользователей с определенной ролью на специальные страницы. Например, если пользователь с ролью «подписчик» зашел на страницу /premium-content/, перенаправить на страницу подписки.

function wpstuff_redirect_by_user_role() {
    if ( is_page('premium-content') && is_user_logged_in() ) {
        $user = wp_get_current_user();
        if ( in_array('subscriber', (array) $user->roles) ) {
            wp_redirect(home_url('/subscribe/'));
            exit;
        }
    }
}
add_action('template_redirect', 'wpstuff_redirect_by_user_role');

Редиректы с использованием плагинов

Если вы не хотите писать код, можно использовать плагины с поддержкой условий:

  • Redirection — популярный бесплатный плагин для управления редиректами с возможностью настроить условия по URL, статусу, рефереру и т.д.
  • Clearfy Pro — содержит расширенные функции оптимизации и управления редиректами, позволяет исключать дублирование и настраивать сложные сценарии.

Например, в Redirection можно создать правило с условием, что редирект срабатывает только если посетитель пришел с определенного домена или с конкретным user agent (браузером).

Редирект по геолокации с помощью кода и плагинов

Редирект по геолокации полезен для сайтов, ориентированных на несколько стран. Для этого можно использовать сервисы IP-геолокации и написать код с проверкой IP.

Пример с использованием GeoIP2 и PHP:

function wpstuff_geo_redirect() {
    if ( !is_admin() && !is_user_logged_in() ) {
        require_once '/path/to/geoip2.phar';
        use GeoIp2\Database\Reader;
        try {
            $reader = new Reader('/path/to/GeoLite2-Country.mmdb');
            $record = $reader->country($_SERVER['REMOTE_ADDR']);
            if ($record->country->isoCode === 'RU' && !is_page('ru-version')) {
                wp_redirect(home_url('/ru-version/'));
                exit;
            }
        } catch (Exception $e) {
            // Логируем ошибку или игнорируем
        }
    }
}
add_action('template_redirect', 'wpstuff_geo_redirect');

Альтернативно можно использовать плагин OmniVideo, который поддерживает геолокационные функции и может быть расширен для редиректов.

Ошибки и нюансы при работе с редиректами в WordPress

При настройке условных редиректов важно помнить:

  • Всегда вызывайте exit; после wp_redirect();, чтобы остановить выполнение скрипта.
  • Не вызывайте редиректы в хуках, где уже отправлялись заголовки.
  • Проверяйте, чтобы не создавать циклы редиректов — они разрушают SEO и пользовательский опыт.
  • Тестируйте редиректы в разных сценариях, особенно при использовании куки и сессий.

Если вы хотите централизованно управлять редиректами, советую использовать плагин Redirection с расширенными логами и условными правилами.

Пример функции для массового условного редиректа по метке в URL

Иногда нужно автоматически перенаправлять все URL с определенным параметром:

function wpstuff_redirect_by_query_var() {
    if ( isset($_GET['promo']) && $_GET['promo'] === 'special' ) {
        wp_redirect(home_url('/special-offer/'));
        exit;
    }
}
add_action('template_redirect', 'wpstuff_redirect_by_query_var');

Это удобно для акций и маркетинговых кампаний, чтобы направлять пользователей на целевые страницы.

Выводы и рекомендации

Условные редиректы — мощный инструмент для построения гибкой логики сайта на WordPress. Используйте встроенные хуки и функции для легких задач или подключайте плагины для сложных сценариев. Обязательно тестируйте все варианты, чтобы избежать ошибок и ухудшения SEO.

Как удалить неиспользуемые таксономии в WordPress
25.02.2026
Как удалить кэш плагинов в WordPress при проблемном очищении
17.12.2025
Как создать автоматический импорт контента из внешних источников в WordPress
13.01.2026
Автоматическое создание копий постов в WordPress
26.12.2025
Как использовать REST API в WordPress для создания страницы настроек
22.11.2025