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

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

Почему важно уметь удалять или изменять URL без редиректа

По умолчанию WordPress при изменении URL страницы автоматически создает редирект с старого адреса на новый. Это удобно, но не всегда желаемо:

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

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

Как WordPress обрабатывает изменение URL

При обновлении слага (части URL) страницы WordPress сохраняет старый URL в таблице wp_postmeta с ключом _wp_old_slug. Затем при обращении к старому URL происходит редирект на новый.

Редирект обрабатывается функцией redirect_canonical(), которая проверяет наличие старого слага и делает перенаправление.

Чтобы отключить это поведение, нужно вмешаться в этот процесс.

Отключение автоматического редиректа старого URL

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

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

Этот код отключит все canonical-редиректы, включая редиректы с устаревших URL.

Если нужно отключить только редиректы с _wp_old_slug, можно сделать точечную проверку:

function wpeditor_disable_old_slug_redirect_specific( $redirect_url ) {
    if ( is_singular() && isset( $_GET['old_slug'] ) ) {
        return false; // Отключаем конкретно редирект по старому слагу
    }
    return $redirect_url;
}
add_filter( 'redirect_canonical', 'wpeditor_disable_old_slug_redirect_specific' );

Но в большинстве случаев первый способ достаточно универсален.

Удаление старых URL из базы данных

Если вы хотите полностью удалить информацию о старых слагах, чтобы WordPress не делал редиректы, придется очистить метаданные _wp_old_slug.

Для этого можно выполнить следующий SQL-запрос на вашем сайте, например через phpMyAdmin:

DELETE FROM wp_postmeta WHERE meta_key = '_wp_old_slug';

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

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

Если нужно удалить старый слаг для конкретного поста программно, используйте такой PHP-код:

function wpeditor_remove_old_slug( $post_id ) {
    delete_post_meta( $post_id, '_wp_old_slug' );
}

Вызовите эту функцию с ID нужного поста после изменения слага.

Изменение URL страницы без редиректа вручную

Если нужно изменить URL без редиректа, рекомендуется:

  1. Отключить редиректы с помощью фильтра redirect_canonical (см. выше).
  2. Изменить слаг страницы через админку или программно.
  3. Удалить метаданные _wp_old_slug, чтобы убрать ссылки на старый URL.

Пример кода для изменения слага и удаления старого слага в одном цикле:

function wpeditor_change_slug_without_redirect( $post_id, $new_slug ) {
    // Изменяем слаг
    wp_update_post( array(
        'ID' => $post_id,
        'post_name' => $new_slug
    ) );
    // Удаляем старый слаг
    delete_post_meta( $post_id, '_wp_old_slug' );
}

// Использование:
// wpeditor_change_slug_without_redirect( 123, 'novyj-slug' );

Как проверить, что редиректы отключены

После внесения изменений проверьте работу сайта с помощью инструментов разработчика в браузере или командой curl:

curl -I https://example.com/staryj-url

Если сервер возвращает код 404 или 200 без редиректа 301/302, значит редиректы успешно отключены.

Поддержка SEO и альтернативные подходы

Отключение редиректов может негативно повлиять на SEO, если старые URL были проиндексированы поисковиками. Рассмотрите альтернативы:

  • Используйте плагин Clearfy Pro, который позволяет гибко управлять редиректами и оптимизацией ссылок. Подробнее на wpshop.ru.
  • Создавайте пользовательские страницы с кодом, которые возвращают 410 Gone для удаленных URL, чтобы сообщить поисковикам об удалении.

Итог

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

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

⭐⭐⭐⭐⭐
Оптимизация базы данных WordPress: как удалить лишние посты и метаданные
22.11.2025
Установка и настройка WPRemark для автоматического комментирования в WordPress
05.04.2026
Как автоматизировать удаление устаревших мета данных в WordPress
12.04.2026
Как создать динамические формы в WordPress с помощью плагинов и кода
18.11.2025
Как создать динамический шорткод с параметрами в WordPress
29.01.2026
×
Сделай свой сайт крутым!

Скидка -20% на премиум плагины WordPress

Выбрать плагин сейчас ⋙