wpcoding.ru wordpress WP Coding

Как добавить динамическое переадресацию в WordPress на основе условий

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

Что такое динамическое переадресация и зачем она нужна

Переадресация (редирект) — это автоматическое перенаправление пользователя с одного URL на другой. Обычно редиректы статичны — один URL всегда ведёт на один другой. Динамическая переадресация меняет целевой URL в зависимости от условий, что позволяет гибко управлять поведением сайта.

Примеры использования динамических редиректов:

  • Перенаправление пользователей с мобильных устройств на мобильную версию сайта.
  • Перенаправление неавторизованных пользователей на страницу входа.
  • Условное перенаправление по UTM-меткам для маркетинговых кампаний.
  • Перенаправление по языку пользователя.

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

Реализация динамической переадресации с помощью кода в functions.php

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

Пример 1. Перенаправление неавторизованных пользователей с приватной страницы

function wpcoding_redirect_non_logged_users() {
    if ( is_page('privatnaya-stranica') && ! is_user_logged_in() ) {
        wp_redirect( wp_login_url( get_permalink() ) );
        exit;
    }
}
add_action('template_redirect', 'wpcoding_redirect_non_logged_users');

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

Пример 2. Перенаправление мобильных пользователей на мобильную версию сайта

Для определения мобильных устройств можно использовать функцию wpcoding_is_mobile_device(). Пример:

function wpcoding_is_mobile_device() {
    return wp_is_mobile();
}

function wpcoding_redirect_mobile_users() {
    if ( wpcoding_is_mobile_device() && ! is_page('mobi-version') ) {
        wp_redirect(home_url('/mobi-version/'));
        exit;
    }
}
add_action('template_redirect', 'wpcoding_redirect_mobile_users');

Здесь все мобильные посетители будут автоматически перенаправлены на страницу /mobi-version/, кроме тех, кто уже на ней находится.

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

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

Плагин Redirection

Один из самых популярных плагинов для управления редиректами. Позволяет создавать правила с условиями URL, заголовков, ролей пользователя и т.д. Например, можно задать правило, которое сработает, если URL содержит определённый параметр, и перенаправить на другой адрес.

Скачать: https://ru.wordpress.org/plugins/redirection/

Плагин Safe Redirect Manager

Простой и лёгкий плагин, поддерживающий создание редиректов с возможностью указания типа редиректа. Подходит для базовых сценариев с динамическими параметрами в URL.

Скачать: https://ru.wordpress.org/plugins/safe-redirect-manager/

Продвинутые варианты: редиректы на основе REST API или AJAX

Иногда необходимо делать переадресацию не сразу при загрузке страницы, а после получения данных от сервера или по результатам AJAX-запроса. В таких случаях можно использовать JavaScript и REST API.

Пример 3. Редирект после проверки состояния пользователя через AJAX

add_action('wp_enqueue_scripts', function() {
    wp_enqueue_script('wpcoding-redirect', get_template_directory_uri() . '/js/redirect.js', ['jquery'], null, true);
    wp_localize_script('wpcoding-redirect', 'wpcoding_ajax', [
        'url' => admin_url('admin-ajax.php'),
        'nonce' => wp_create_nonce('wpcoding_nonce')
    ]);
});

add_action('wp_ajax_nopriv_wpcoding_check_user', function() {
    check_ajax_referer('wpcoding_nonce');
    if ( ! is_user_logged_in() ) {
        wp_send_json_success(['redirect' => wp_login_url()]);
    } else {
        wp_send_json_error();
    }
});

Этот код загружает скрипт, который по AJAX проверяет, авторизован ли пользователь. Если нет — выполняется редирект на страницу входа.

Советы по безопасной и корректной реализации динамических переадресаций

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

  • Всегда вызывать exit; после wp_redirect(), чтобы избежать выполнения лишнего кода.
  • Избегать циклических редиректов — проверяйте, что пользователь не перенаправляется на ту же страницу постоянно.
  • Использовать правильные коды ответа HTTP (301 для постоянных, 302 для временных редиректов).
  • Тестировать редиректы в разных браузерах и под разными пользователями.
  • Если используете плагины, следите за их обновлениями и совместимостью с вашей версией WordPress.

Заключение

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

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше