Как создать автоматический редирект в 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 значительно упрощают работу без написания кода.

Как создать динамические формы в WordPress с помощью REST API
05.04.2026
Как отключить отзывы WooCommerce для отдельных товаров
05.05.2026
Как установить ограничение на число публикаций в WordPress для конкретного пользователя
21.02.2026
Автоматическое удаление старых записей WordPress по дате публикации
08.04.2026
Как использовать WP хуки для динамического управления контейнерами в WordPress
19.03.2026