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

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

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

Когда меняется слаг, старый URL перестаёт работать, WordPress возвращает 404 ошибку. Это плохо для пользователей и поисковых систем, так как:

  • Пользователи видят страницу не найдена;
  • Поисковые роботы фиксируют битые ссылки и понижают рейтинг;
  • Ссылочный вес старой страницы теряется.

Чтобы этого избежать, нужно настроить редирект 301 — постоянный редирект, который сообщает, что страница перемещена на новый адрес.

Автоматический редирект при смене слага на PHP уровне

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

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

function wpma_redirect_old_slug( $post_ID, $post_after, $post_before ) {
    if ( $post_after->post_name !== $post_before->post_name ) {
        add_option( 'wpma_old_slug_' . $post_after->ID, $post_before->post_name );
    }
}
add_action( 'post_updated', 'wpma_redirect_old_slug', 10, 3 );

function wpma_check_redirect_old_slug() {
    if ( is_404() ) {
        global $wpdb;
        $requested_slug = basename( $_SERVER['REQUEST_URI'] );
        $old_slug_option = $wpdb->get_col( "SELECT option_value FROM $wpdb->options WHERE option_name LIKE 'wpma_old_slug_%'" );
        foreach ( $old_slug_option as $old_slug ) {
            if ( $requested_slug === $old_slug ) {
                $post_id = str_replace( 'wpma_old_slug_', '', array_search( $old_slug, $old_slug_option ) );
                $new_url = get_permalink( intval( $post_id ) );
                if ( $new_url ) {
                    wp_redirect( $new_url, 301 );
                    exit();
                }
            }
        }
    }
}
add_action( 'template_redirect', 'wpma_check_redirect_old_slug' );

В этом коде при обновлении записи, если слаг изменился, мы сохраняем старый слаг в опциях, а при 404 проверяем, не совпадает ли запрошенный URL с одним из старых слагов, и делаем редирект на новый URL.

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

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

Плагин Redirection

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

Плагин Clearfy Pro для SEO и редиректов

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

Особенности редиректов для кастомных типов записей и таксономий

Для кастомных типов записей (Custom Post Types) и таксономий логика смены слага и редиректа может отличаться. Их URL часто имеют префиксы и могут содержать вложенные структуры.

Редиректы для кастомных типов записей

При смене слага CPT также важно отслеживать изменения и создавать редиректы. Пример функции для CPT wpma_redirect_old_slug_cpt:

function wpma_redirect_old_slug_cpt( $post_ID, $post_after, $post_before ) {
    if ( $post_after->post_type === 'your_cpt' ) {
        if ( $post_after->post_name !== $post_before->post_name ) {
            add_option( 'wpma_old_slug_cpt_' . $post_after->ID, $post_before->post_name );
        }
    }
}
add_action( 'post_updated', 'wpma_redirect_old_slug_cpt', 10, 3 );

Затем в хуке template_redirect нужно добавить аналогичную проверку для старых слагов CPT.

Редиректы для таксономий

Для таксономий можно использовать хук edited_term, чтобы отслеживать изменение слага термина:

function wpma_redirect_old_slug_taxonomy( $term_id, $tt_id, $taxonomy ) {
    $term = get_term( $term_id, $taxonomy );
    $old_slug = get_option( 'wpma_old_slug_tax_' . $term_id );
    if ( $term->slug !== $old_slug ) {
        update_option( 'wpma_old_slug_tax_' . $term_id, $term->slug );
    }
}
add_action( 'edited_term', 'wpma_redirect_old_slug_taxonomy', 10, 3 );

Далее по аналогии нужно обрабатывать 404 ошибки и делать редирект.

Советы по тестированию и отладке редиректов

После настройки автоматических редиректов важно тщательно проверить их работу:

  • Измените слаг записи и проверьте, что старая ссылка корректно редиректит на новую;
  • Проверьте, что нет циклических редиректов или цепочек;
  • Используйте инструменты для проверки HTTP статусов, например, httpstatus.io;
  • Обратите внимание на кеширование — иногда кеш плагинов или браузера мешает увидеть результат;
  • Для SEO-анализа используйте Google Search Console, чтобы мониторить ошибки 404 и редиректы.

Заключение

Автоматизация редиректов после смены слага — важный этап в поддержании здоровья сайта на WordPress. С помощью простого кода или проверенных плагинов можно сохранить позиции сайта в поисковиках и удобство для пользователей. Рекомендуется также использовать комплексные SEO-плагины, такие как Clearfy Pro, которые упрощают эту задачу.

Как добавить настройку очистки кеша в админке WordPress
07.01.2026
WooCommerce: автоматическое отключение способов оплаты при неподтверждённых заказах без плагинов
17.06.2026
Как создать автоматический запрос на данные в WordPress с помощью WP_Query и AJAX
02.03.2026
Как создать защищённый формуляр обработки данных в WordPress
03.12.2025
Как автоматизировать удаление неиспользуемых медиафайлов в WordPress
15.01.2026