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

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

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

Редиректы – это инструмент, который помогает перенаправлять пользователей и поисковые системы с одного URL на другой. Автоматизация этого процесса позволяет:

  • избежать ошибок 404 при изменении структуры сайта;
  • перенаправлять пользователей с устаревших страниц на актуальные;
  • управлять доступом, например, отправлять гостей на страницу входа;
  • улучшать внутреннюю перелинковку для SEO.

Реализация условных редиректов вручную через .htaccess или серверные настройки часто неудобна и сложна для динамических условий, поэтому лучше использовать PHP и хуки WordPress.

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

Самый простой и гибкий способ — использовать хук template_redirect. Он вызывается до вывода контента и позволяет безопасно выполнить редирект.

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

function wp1_redirect_unauthenticated_users() {
    if ( !is_user_logged_in() && is_page('member-area') ) {
        wp_redirect( wp_login_url( get_permalink() ) );
        exit;
    }
}
add_action('template_redirect', 'wp1_redirect_unauthenticated_users');

Объяснение:

  • is_user_logged_in() проверяет, авторизован ли пользователь;
  • is_page('member-area') — проверяет, что мы на странице с ярлыком member-area;
  • wp_redirect() делает редирект на страницу входа с передачей текущего URL для последующего возврата.

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

Допустим, нужно перенаправлять пользователей с ролью «подписчик» с главной страницы на кастомную страницу.

function wp1_redirect_subscribers() {
    if ( is_front_page() && is_user_logged_in() ) {
        $user = wp_get_current_user();
        if ( in_array('subscriber', (array) $user->roles) ) {
            wp_redirect( site_url('/special-offer') );
            exit;
        }
    }
}
add_action('template_redirect', 'wp1_redirect_subscribers');

Этот код проверяет роль текущего пользователя и если она «subscriber», то выполняет редирект.

Редиректы с использованием плагинов: удобные решения без кода

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

  • Redirection — самый популярный плагин для управления редиректами. Позволяет создавать правила с условиями по URL, рефереру, ролям и т.д.
  • Safe Redirect Manager — простой и надёжный плагин для редиректов с базовыми условиями.
  • WP Conditional Redirects — плагин, специализирующийся на условных редиректах по ролям, устройствам, страницам.

Для примера создадим правило в Redirection для перенаправления всех посетителей с мобильных устройств на отдельную мобильную версию сайта. В интерфейсе добавим новое правило, выберем условие по User-Agent, указав шаблон для мобильных браузеров, и в качестве цели — URL мобильной версии.

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

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

function wp1_conditional_time_based_redirect() {
    if ( is_page('promo') && is_user_logged_in() ) {
        $user_id = get_current_user_id();
        $special_access = get_user_meta($user_id, 'special_access', true);

        $hour = (int) date('H');

        if ( $special_access === 'yes' ) {
            // Редирект для пользователей с доступом
            wp_redirect(site_url('/special-promo'));
            exit;
        } elseif ( $hour >= 9 && $hour < 18 ) {
            // Рабочие часы — обычный промо
            wp_redirect(site_url('/day-promo'));
            exit;
        } else {
            // Вне рабочего времени — страница ожидания
            wp_redirect(site_url('/wait-promo'));
            exit;
        }
    }
}
add_action('template_redirect', 'wp1_conditional_time_based_redirect');

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

Советы по отладке и безопасности редиректов

При работе с редиректами важно:

  • всегда использовать exit; после wp_redirect() — чтобы избежать продолжения выполнения скрипта;
  • делать проверки на валидность URL, чтобы избежать открытых редиректов — это риск для безопасности;
  • тестировать редиректы в разных сценариях и на разных ролях;
  • следить за циклическими редиректами — они приводят к ошибкам загрузки.

Для проверки редиректов удобно использовать инструменты браузера (DevTools, вкладка Network) и специальные онлайн-сервисы.

Заключение

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

Как отключить отзывы WooCommerce для отдельных товаров
28.02.2026
Как настроить автоматическое удаление старых записей WordPress по типу и дате
11.04.2026
Как использовать user meta в WordPress для сохранения дополнительных данных
24.01.2026
Как создать автоматический импорт продуктов в WordPress с WPSHOP
19.12.2025
Как отключить автоматическое обновление плагинов в WordPress
26.05.2026