Как добавить переадресацию в WordPress без плагинов

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

Почему стоит использовать переадресации без плагинов

Плагины для редиректов, например, Redirection, действительно удобны и функциональны. Но они добавляют нагрузку на сайт и требуют обновлений. В некоторых случаях, особенно при небольшом количестве переадресаций, гораздо эффективнее реализовать редиректы вручную через код в файле functions.php или в плагине-«mu-plugin».

Преимущества подхода без плагинов:

  • Минимальное влияние на производительность;
  • Гибкость и прозрачность логики;
  • Отсутствие зависимости от сторонних разработчиков;
  • Простота интеграции с кастомными условиями.

Далее рассмотрим примеры реализации различных типов редиректов на WordPress с помощью кода.

Добавление простого редиректа 301 в functions.php

Редирект 301 — это постоянное перенаправление, которое передает поисковикам информацию о том, что страница навсегда перемещена. Его лучше всего использовать для SEO и сохранения ссылочного веса.

Пример функции для wpboot.ru, которую можно добавить в functions.php текущей темы:

function wpboot_redirect_old_to_new() {
    if (is_page('staraia-stranica')) {
        wp_redirect(home_url('/novaya-stranica/'), 301);
        exit;
    }
}
add_action('template_redirect', 'wpboot_redirect_old_to_new');

Здесь мы проверяем, открывается ли страница с ярлыком staraia-stranica, и если да, то перенаправляем пользователя на /novaya-stranica/ с ответом 301.

Важно использовать хук template_redirect, так как это выполняется до формирования контента, и вызов exit; завершает дальнейшую загрузку.

Редирект с параметрами URL и регулярными выражениями

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

Пример для переадресации всех URL вида /product-category/old-category/* на /product-category/new-category/*:

function wpboot_redirect_category_pattern() {
    $request_uri = $_SERVER['REQUEST_URI'];
    if (preg_match('#^/product-category/old-category/(.+)$#', $request_uri, $matches)) {
        $new_url = home_url('/product-category/new-category/' . $matches[1]);
        wp_redirect($new_url, 301);
        exit;
    }
}
add_action('template_redirect', 'wpboot_redirect_category_pattern');

Этот код ловит все URL, начинающиеся с /product-category/old-category/, и сохраняет остаток пути, добавляя его к новому адресу.

Редирект с условием по параметру GET

Если нужно сделать редирект в зависимости от параметра, например, ?ref=oldpartner, используйте следующий код:

function wpboot_redirect_by_get_param() {
    if (isset($_GET['ref']) && $_GET['ref'] === 'oldpartner') {
        wp_redirect(home_url('/new-partner-page/'), 302);
        exit;
    }
}
add_action('template_redirect', 'wpboot_redirect_by_get_param');

Здесь мы выполняем временный редирект 302 для посетителей с определённым параметром.

Групповые редиректы с использованием массива и цикла

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

function wpboot_bulk_redirects() {
    $redirects = [
        '/old-page-1/' => '/new-page-1/',
        '/old-page-2/' => '/new-page-2/',
        '/old-page-3/' => '/new-page-3/',
    ];

    $request_uri = $_SERVER['REQUEST_URI'];
    foreach ($redirects as $old => $new) {
        if ($request_uri === $old) {
            wp_redirect(home_url($new), 301);
            exit;
        }
    }
}
add_action('template_redirect', 'wpboot_bulk_redirects');

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

Использование .htaccess vs PHP редиректы

Для сайтов на Apache часто рекомендуют делать редиректы через .htaccess, что быстрее, так как обработка происходит на уровне сервера без загрузки WordPress.

Пример записи в .htaccess для 301 редиректа:

Redirect 301 /old-page /new-page

Однако, .htaccess сложнее поддерживать при большом количестве правил и он не даёт гибкости для условий, связанных с WordPress (например, пользовательские поля, роли и т.п.). В таких случаях лучше использовать код в WordPress.

Проверка и отладка редиректов

После настройки редиректов важно проверить их работу. Для этого можно использовать браузерные расширения (Redirect Path, HTTP Headers), онлайн-сервисы или команду curl:

curl -I https://wpboot.ru/old-page

Она покажет HTTP статус и заголовок Location.

Если редиректы не работают, проверьте правильность хука template_redirect, отсутствие конфликтов с другими плагинами и правильность условий.

Рекомендации и советы

  • Всегда делайте постоянные редиректы 301 для переноса страниц, чтобы сохранить SEO;
  • Для временных ситуаций используйте 302;
  • Избегайте циклических редиректов — они вызывают ошибки;
  • Оптимизируйте количество редиректов — лучше делать меньше, чтобы не замедлять сайт;
  • Храните код редиректов в отдельном файле или собственном плагине, если много правил;
  • Используйте логи и отладочные инструменты для мониторинга.

Пример создания плагина с редиректами для wpboot.ru

Если хочется выделить редиректы в отдельный плагин, создайте файл wpboot-redirects.php в wp-content/plugins/ со следующим содержимым:

<?php
/**
 * Plugin Name: WPBoot Redirects
 * Description: Переадресации для сайта wpboot.ru
 * Version: 1.0
 * Author: WPBoot
 */

function wpboot_redirects_plugin() {
    // Добавьте сюда ваши редиректы
    if (is_page('staraia-stranica')) {
        wp_redirect(home_url('/novaya-stranica/'), 301);
        exit;
    }
}
add_action('template_redirect', 'wpboot_redirects_plugin');

Активируйте плагин в админке — и редиректы заработают.

Также можно расширять этот плагин, добавляя админ-панель для управления редиректами, но это уже более сложная задача.

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

Как добавить настройки в блоки Gutenberg в WordPress
06.01.2026
Как добавить динамические атрибуты alt к картинкам в WordPress для SEO и доступности
11.03.2026
Как вывести правильное изображение товара в WooCommerce при использовании вариаций
20.04.2026
Как создать динамический фильтр по метаданным в WordPress
22.03.2026
Замена AJAX на Fetch API в WordPress Gutenberg
05.04.2026