Как удалить или изменить URL записи WordPress без редиректа и ошибок 404

|

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

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

В последних версиях WordPress реализован механизм, который автоматически добавляет перенаправления с предыдущих URL на новые — это сделано для удобства и сохранения SEO-показателей. Механизм называется wp_old_slug_redirect и работает через сохранение старых постоянных ссылок в метаданных записи.

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

Просто удалить запись метаполя _wp_old_slug вручную не всегда помогает, так как WordPress дополнительно к этому может использовать кеш и внутренние правила.

Как отключить автоматические редиректы URL в WordPress

Чтобы полностью отключить автоматические редиректы старых URL, можно воспользоваться фильтром redirect_canonical. Этот фильтр отвечает за перенаправления, в том числе при изменении URL записи.

Добавьте следующий код в файл functions.php вашей темы или в отдельный плагин для управления функциями:

function wppremium_disable_old_slug_redirect($redirect_url) {
    if (is_singular()) {
        return false; // Отключаем редиректы для одиночных записей
    }
    return $redirect_url;
}
add_filter('redirect_canonical', 'wppremium_disable_old_slug_redirect');

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

Что важно учитывать при отключении редиректов

Как удалить метаданные старых URL из базы данных

Чтобы гарантированно убрать следы старых URL, необходимо удалить метаполя _wp_old_slug из записей. Для этого можно использовать следующий скрипт, который выполнит массовое удаление из базы данных:

function wppremium_delete_old_slugs() {
    global $wpdb;
    $meta_key = '_wp_old_slug';
    $wpdb->query($wpdb->prepare(
        "DELETE FROM {$wpdb->postmeta} WHERE meta_key = %s",
        $meta_key
    ));
}

// Запустите функцию один раз вручную, затем закомментируйте или удалите вызов
// wppremium_delete_old_slugs();

Важно: запускать этот код нужно аккуратно и однократно, так как он удаляет данные из базы, и восстановить их будет сложно. Лучше сделать резервную копию базы перед выполнением.

Пример управления URL и отключения редиректов для пользовательских типов записей

Если у вас есть кастомные типы записей, например, product, вы можете применить аналогичный подход:

function wppremium_disable_redirects_for_custom_post_type($redirect_url) {
    if (is_singular('product')) {
        return false; // Отключаем редирект для типа product
    }
    return $redirect_url;
}
add_filter('redirect_canonical', 'wppremium_disable_redirects_for_custom_post_type');

Это позволит более гибко управлять поведением редиректов в зависимости от типа контента.

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

Если вы предпочитаете не писать код, можно воспользоваться специализированными плагинами:

Использование этих плагинов позволит более удобно контролировать поведение URL и редиректов без необходимости вмешиваться в код.

Советы по безопасному изменению URL записей без потерь

Изменение URL — это всегда риск потерять трафик и вызвать ошибки 404. Чтобы минимизировать риски:

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

Как изменить автозаголовок WordPress динамически на основе контекста
11.02.2026
WooCommerce: как программно изменить статус заказа без плагинов
28.05.2026
Как удалить атрибуты srcset из тега img в WordPress для оптимизации
22.04.2026
Как удалить пустые мета поля в WordPress через код и плагины
24.02.2026
WooCommerce: как программно удалять неактивные корзины и заказы без плагинов
21.06.2026
×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее