Как автоматизировать управление перенаправлениями в WordPress

|

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

Зачем нужна автоматизация перенаправлений в WordPress

Автоматизация редиректов позволяет:

Особенно полезна автоматизация при миграции сайта, смене структуры URL или интеграции с внешними системами.

Популярные плагины для автоматизации редиректов в WordPress

Для автоматизации перенаправлений можно использовать проверенные плагины с широким функционалом:

1. Redirection

Один из самых популярных бесплатных плагинов для управления 301 и 302 редиректами. Позволяет создавать перенаправления на основе URL, отслеживать 404 ошибки и автоматически создавать редиректы при смене URL.

Преимущества:

2. WP 404 Auto Redirect to Similar Post

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

3. Safe Redirect Manager

Легкий плагин для создания и управления редиректами с возможностью настраивать тип редиректа и условия срабатывания.

Как автоматизировать редиректы через код в functions.php

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

Ниже пример функции wpdetect_auto_redirect_on_slug_change, которая создает редирект 301 при изменении слага записи:

add_action('post_updated', 'wpdetect_auto_redirect_on_slug_change', 10, 3); 
function wpdetect_auto_redirect_on_slug_change($post_ID, $post_after, $post_before) {
    if ($post_after->post_type !== 'post') return;

    $old_slug = $post_before->post_name;
    $new_slug = $post_after->post_name;

    if ($old_slug !== $new_slug) {
        global $wpdb;
        $old_url = home_url('/' . $old_slug . '/');
        $new_url = home_url('/' . $new_slug . '/');

        $redirects_table = $wpdb->prefix . 'wpdetect_redirects';

        $wpdb->query($wpdb->prepare(
            "INSERT INTO $redirects_table (old_url, new_url, redirect_type) VALUES (%s, %s, 301) ON DUPLICATE KEY UPDATE new_url = %s",
            $old_url, $new_url, $new_url
        ));
    }
}

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

Обработка редиректов на уровне WordPress

Чтобы реализовать автоматический редирект при попадании на старый URL, добавим следующий код в functions.php:

add_action('template_redirect', 'wpdetect_handle_redirects');
function wpdetect_handle_redirects() {
    if (is_admin()) return;

    global $wpdb;
    $current_url = home_url(add_query_arg(null, null));

    $redirects_table = $wpdb->prefix . 'wpdetect_redirects';
    $redirect = $wpdb->get_row($wpdb->prepare("SELECT new_url, redirect_type FROM $redirects_table WHERE old_url = %s", $current_url));

    if ($redirect) {
        wp_redirect($redirect->new_url, intval($redirect->redirect_type));
        exit;
    }
}

Этот код проверяет текущий URL, ищет в таблице соответствующий редирект и выполняет перенаправление с нужным HTTP кодом.

Создание таблицы для хранения редиректов

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

CREATE TABLE wpdetect_redirects (
    id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    old_url VARCHAR(255) NOT NULL UNIQUE,
    new_url VARCHAR(255) NOT NULL,
    redirect_type SMALLINT NOT NULL DEFAULT 301
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Таблица хранит старый URL, новый URL и тип редиректа (301, 302 и т.п.).

Автоматизация управления редиректами при массовом изменении URL

Если нужно массово обновить URL и создать редиректы, можно написать WP-CLI команду. Пример функции, которая по CSV-файлу с двумя колонками (старый URL, новый URL) добавляет редиректы в таблицу:

if (defined('WP_CLI') && WP_CLI) {
    WP_CLI::add_command('wpdetect import-redirects', function($args) {
        $file = $args[0] ?? '';
        if (!file_exists($file)) {
            WP_CLI::error('Файл не найден');
            return;
        }
        global $wpdb;
        $redirects_table = $wpdb->prefix . 'wpdetect_redirects';
        $handle = fopen($file, 'r');
        while (($data = fgetcsv($handle)) !== false) {
            list($old_url, $new_url) = $data;
            $wpdb->query($wpdb->prepare(
                "INSERT INTO $redirects_table (old_url, new_url, redirect_type) VALUES (%s, %s, 301) ON DUPLICATE KEY UPDATE new_url = %s",
                $old_url, $new_url, $new_url
            ));
        }
        fclose($handle);
        WP_CLI::success('Редиректы импортированы');
    });
}

Это позволит импортировать тысячи правил с минимальными усилиями.

Рекомендации по управлению редиректами

Для эффективного управления редиректами соблюдайте следующие правила:

Заключение

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

Автоматическое отключение неиспользуемых шорткодов в WordPress: практическое руководство
07.02.2026
Оптимизация загрузки изображений в WordPress: практические методы и примеры
19.11.2025
Как настроить автоматический сбор и удаление логов в WordPress
31.01.2026
Оптимизация бесплатных SSL-ссылок для WordPress: решаем проблему с безопасностью и SEO
20.05.2025
Как создать адаптивный блок с выбором темы в WordPress: практическое руководство
10.11.2025
×
-15%
на премиум плагин
My Popup

Повысьте конверсию!

Получить скидку »