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

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

⭐⭐⭐⭐⭐
Как автоматически транслитерировать метки (теги) в WordPress для SEO
19.03.2026
Как автоматически удалять большие файлы в WordPress: практическое решение
09.04.2026
Как автоматизировать транслитерацию меток (тегов) в WordPress для SEO
26.03.2026
Как автоматически удалять старые промышленные черновики в WordPress
05.04.2026
Как сделать динамические заголовки в WordPress на основе данных
13.12.2025
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее