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

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

Почему важен автоматический редирект при изменении URL

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

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

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

Реализовать автоматический редирект можно двумя способами: с помощью плагина или собственным кодом в functions.php темы.

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

Для большинства сайтов самый простой и надёжный способ — использовать специализированные плагины. Рассмотрим несколько популярных и функциональных решений.

Плагин Clearfy

Clearfy — многофункциональный плагин для оптимизации WordPress, в том числе умеет автоматически создавать редиректы при изменении URL записей. Включите опцию «Автоматические редиректы при смене URL» в настройках, и плагин будет отслеживать изменения и создавать 301 редиректы без вашего участия.

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

  • Простота настройки и интеграция с другими функциями оптимизации.
  • Отсутствие необходимости писать код.
  • Поддержка массовых операций.

Плагин Redirection

Redirection — один из самых популярных плагинов для управления редиректами. Он не делает автоматические редиректы при смене URL по умолчанию, но умеет импортировать старые URL, если они сохранены, и позволяет создавать правила вручную.

Для автоматизации процесса можно использовать вместе с Redirection плагин Safe Redirect Manager или написать собственный код, который будет добавлять редиректы в Redirection при смене URL.

Как сделать автоматический редирект при изменении URL с помощью кода

Если вы хотите избежать установки дополнительных плагинов и имеете базовые навыки PHP, можно реализовать автоматический редирект самостоятельно. Для этого нужно отследить изменение поля post_name — слага записи, и при изменении сохранить старый URL в базе, а при запросе старого URL сделать редирект.

Основная идея — использовать хуки WordPress post_updated и template_redirect.

Шаг 1. Сохраняем старый URL при обновлении записи

function cyrtolat_save_old_slug($post_ID, $post_after, $post_before) {
    if ($post_after->post_type !== 'post' && $post_after->post_type !== 'page') {
        return;
    }
    if ($post_before->post_name !== $post_after->post_name) {
        global $wpdb;
        $old_slug = $post_before->post_name;
        $post_type = $post_after->post_type;
        // Сохраняем старый slug в отдельной таблице
        $table_name = $wpdb->prefix . 'cyrtolat_old_slugs';
        $wpdb->query($wpdb->prepare(
            "INSERT INTO $table_name (post_id, old_slug, post_type) VALUES (%d, %s, %s) ON DUPLICATE KEY UPDATE old_slug = VALUES(old_slug)",
            $post_ID, $old_slug, $post_type
        ));
    }
}
add_action('post_updated', 'cyrtolat_save_old_slug', 10, 3);

Обратите внимание, что для этого нужно создать таблицу wp_cyrtolat_old_slugs в базе с колонками post_id, old_slug и post_type. Это позволит хранить историю старых URL для редиректа.

Шаг 2. Создаём таблицу для хранения старых URL

function cyrtolat_create_old_slugs_table() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'cyrtolat_old_slugs';
    $charset_collate = $wpdb->get_charset_collate();

    $sql = "CREATE TABLE IF NOT EXISTS $table_name (
      post_id BIGINT UNSIGNED NOT NULL,
      old_slug VARCHAR(200) NOT NULL,
      post_type VARCHAR(20) NOT NULL,
      PRIMARY KEY  (post_id),
      UNIQUE KEY old_slug (old_slug)
    ) $charset_collate;";

    require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
    dbDelta($sql);
}
register_activation_hook(__FILE__, 'cyrtolat_create_old_slugs_table');

Шаг 3. Перенаправляем со старого URL на новый

function cyrtolat_redirect_old_slug() {
    if (is_404()) {
        global $wpdb;
        $requested_path = trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/');
        $table_name = $wpdb->prefix . 'cyrtolat_old_slugs';

        $post_id = $wpdb->get_var($wpdb->prepare(
            "SELECT post_id FROM $table_name WHERE old_slug = %s LIMIT 1",
            $requested_path
        ));

        if ($post_id) {
            $url = get_permalink($post_id);
            if ($url) {
                wp_redirect($url, 301);
                exit;
            }
        }
    }
}
add_action('template_redirect', 'cyrtolat_redirect_old_slug');

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

Особенности и рекомендации

При использовании собственного решения важно учитывать:

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

Выводы

Автоматический редирект при изменении URL — ключевой элемент поддержки сайта на WordPress с точки зрения SEO и удобства пользователей. Самый простой способ — использовать плагин Clearfy, который автоматизирует этот процесс без лишних настроек. Если нужна кастомизация, можно создать собственное решение с использованием хуков post_updated и template_redirect, сохранять старые слаги в отдельной таблице и делать редиректы через PHP. Это позволит избежать ошибок 404 и сохранить позиции сайта в поисковиках.

Для знакомства с Clearfy и его возможностями посетите официальную страницу плагина.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как автоматически исключить из каталога WooCommerce товары без остатка на складе
28.04.2026
Как отключить способы доставки для определённых товаров WooCommerce
09.08.2026
Как использовать хуки WordPress для эффективного контроля записей
06.12.2025
Автоматическое изменение стоимости и складского остатка при обновлении заказа WooCommerce
01.05.2026
Как избежать проблем с кэшированием в WordPress: практическое руководство
02.02.2026
×

Время действовать!

Суперцены на
WordPress!

-20%
на премиум темы

Не упусти шанс ⋙