WooCommerce: как правильно изменить URL товара без создания 301 редиректа

Почему важно корректно изменить URL товара в WooCommerce

Изменение URL товара в WooCommerce может привести к множеству проблем, если сделать это неправильно. Часто при смене URL автоматически создаются 301 редиректы, что не всегда желаемо: например, при массовом обновлении адресов или тестировании новых структур ссылок. Неправильное управление URL может вызвать проблемы с SEO, потерю трафика и ошибки на сайте.

Диагностика проблемы: как понять, что URL товара меняется с редиректом

Чтобы проверить, создаются ли редиректы автоматически при изменении URL, воспользуйтесь следующими шагами:

  • Измените URL товара в админке WooCommerce (поле «Ярлык» или slug в настройках товара).
  • Сохраните изменения.
  • Откройте старую ссылку товара в браузере и посмотрите, происходит ли переадресация на новый URL (код ответа HTTP 301 или 302).
  • Используйте инструменты разработчика браузера или curl, например:
    curl -I https://example.com/staryj-url-tovara
  • Если возвращается 301/302, значит редирект настроен автоматически.

Это поведение WooCommerce и WordPress по умолчанию, чтобы не потерять SEO-ценность. Но бывают ситуации, когда редиректы не нужны.

Как изменить URL товара в WooCommerce без создания автоматического редиректа

По умолчанию WordPress создаёт редирект с помощью функции wp_old_slug_redirect(), которая срабатывает на основе сохранённых старых ярлыков (slug). Для отключения такого поведения с товарами WooCommerce нужно:

1. Отключить сохранение старого slug при обновлении товара

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

add_filter('wp_old_slug_redirect_post_type', function($post_type) {
    // Отключаем редиректы только для товаров
    if ($post_type === 'product') {
        return false;
    }
    return $post_type;
});

Этот фильтр запрещает создавать редиректы для типа записи product.

2. Удалить сохранённые старые слуги у продуктов

WordPress хранит старые slug в метаданных _wp_old_slug. Их нужно удалить, чтобы редиректы не срабатывали:

function delete_old_slugs_for_products() {
    global $wpdb;
    $wpdb->query(
        "DELETE FROM $wpdb->postmeta WHERE meta_key = '_wp_old_slug' AND post_id IN (
            SELECT ID FROM $wpdb->posts WHERE post_type = 'product'
        )"
    );
}
delete_old_slugs_for_products();

Запустите этот код один раз (например, через WP-CLI или временно добавив в functions.php и обновив админку), после чего удалите его.

Проверка результата: как убедиться, что редирект не создаётся

  • Измените URL товара в админке.
  • Сохраните.
  • Откройте старый URL в браузере или с помощью curl -I.
  • Убедитесь, что возвращается 404 или страница не переадресовывается.

Пример команды для проверки:

curl -I https://example.com/staryj-url-tovara
HTTP/1.1 404 Not Found

Частые ошибки при отключении редиректов WooCommerce

  • Код добавлен не в ту тему или файл. Если вы используете дочернюю тему, убедитесь, что код в её functions.php.
  • Кэширование. Кэш плагинов или сервера может показывать старое поведение — очистите кэш.
  • Плагины безопасности или SEO. Некоторые плагины могут сами создавать редиректы, проверьте их настройки.
  • Не удалены старые slug. Если не удалить метаданные _wp_old_slug, редирект останется.

Практические рекомендации по безопасности и производительности

  • Отключение редиректов может привести к появлению 404 ошибок для старых URL. Убедитесь, что это не влияет на SEO или пользовательский опыт.
  • Если планируется массовое изменение URL, лучше сделать временные редиректы или уведомить поисковые системы.
  • Регулярно очищайте метаданные _wp_old_slug для поддержания чистоты базы данных.
  • Для массовых изменений URL используйте WP-CLI скрипты для автоматизации и контроля.

Сравнение вариантов изменения URL товара в WooCommerce

МетодСоздаёт редиректПрименимостьПлюсыМинусы
Изменение slug в админке (по умолчанию)ДаДля большинства случаевСохраняет SEO, не ломает ссылкиНевозможно отключить редиректы
Отключение редиректов через фильтр wp_old_slug_redirect_post_type + удаление метаданныхНетЕсли нужно сменить URL без редиректаКонтроль над URL, не создаёт лишних редиректовПоявление 404 на старых URL, можно потерять SEO
Использование плагинов для управления редиректамиПо настройкеДля комплексного управления ссылкамиГибкость, возможность создавать правилаНагрузка на сайт, нужно настраивать
Как изменить URL входа в админку WordPress без плагинов
20.03.2026
Как удалить или изменить URL страницы в WordPress без перенаправления
19.01.2026
WooCommerce: как автоматически удалять товары при нулевом остатке
23.05.2026
Как отключить XML-RPC в WordPress для повышения безопасности
23.03.2026
Автоматизация создания резервных копий в WordPress: плагины и кодовые решения
14.01.2026