Как избежать проблем с переадресацией в WooCommerce после изменения URL товара

Диагностика проблемы с переадресацией после изменения URL товара

В WooCommerce изменение URL товара (slug) без корректной настройки 301 редиректа приводит к ошибке 404 и потере SEO трафика. Основная причина — отсутствие автоматического обновления правил переадресации на старые ссылки.

Проверить проблему можно так:

  • Измените URL товара в админке WooCommerce (редактирование «ЧПУ» товара).
  • Попробуйте зайти на старый URL товара в браузере.
  • Если появляется страница 404, значит редирект не настроен.

Для диагностики также используйте инструменты, например, httpstatus.io, чтобы увидеть статус HTTP при переходе по старому URL.

Пошаговое решение: как автоматически настроить редиректы после смены URL товара

1. Добавление кастомного кода для записи старого URL и создания редиректа

WooCommerce не создаёт редиректы автоматически. Нужно записывать старый URL до изменения и при сохранении настроить редирект с помощью 301. Ниже пример кода, который:

  • Сохраняет предыдущий slug товара в метаполе.
  • При изменении URL создаёт правило редиректа.
add_action('save_post_product', 'wpdir_woocommerce_redirect_old_slug', 10, 3);
function wpdir_woocommerce_redirect_old_slug($post_ID, $post, $update) {
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;

    $old_slug = get_post_meta($post_ID, '_old_slug', true);
    $new_slug = $post->post_name;

    if ($update && $old_slug && $old_slug !== $new_slug) {
        // Добавим редирект со старого URL на новый
        add_filter('template_redirect', function() use ($old_slug, $new_slug) {
            $requested_slug = trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/');
            if ($requested_slug === 'product/' . $old_slug) {
                wp_redirect(site_url('/product/' . $new_slug), 301);
                exit;
            }
        });
    }

    // Обновляем метаполе старого slug
    update_post_meta($post_ID, '_old_slug', $new_slug);
}

2. Очистка пермалинков

После изменения URL товара всегда переходите в Настройки > Постоянные ссылки и нажимайте «Сохранить изменения» без изменений, чтобы обновить правила перезаписи.

Проверка результата после внедрения

  • Измените URL любого товара.
  • Попробуйте зайти на старый URL — должен произойти 301 редирект на новый.
  • Проверьте заголовки HTTP с помощью curl или онлайн-сервисов. Например:
curl -I https://example.com/product/starij-slug

Ответ должен содержать HTTP/1.1 301 Moved Permanently и заголовок Location с новым URL.

Частые ошибки и как их исправить

  • Редирект не срабатывает: проверьте, что код добавлен в functions.php активной темы или плагина, и что нет конфликтов с другими редиректами.
  • Изменение slug не сохраняется в метаполе: убедитесь, что при сохранении поста вызывается update_post_meta и что не происходит автосейв без обновления.
  • Переадресация циклична: проверьте, что условие сравнивает именно старый slug и не вызывает редирект, если URL уже новый.
  • Перманентные ссылки не обновлены: всегда сохраняйте структуру постоянных ссылок после правок URL.

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

  • Не добавляйте слишком сложные функции в хук template_redirect. В нашем примере фильтр добавляется условно, только при сохранении поста — для более стабильной работы лучше реализовать редиректы через сервер (htaccess/nginx) или использовать специализированные плагины.
  • Для массового управления редиректами рекомендуем использовать плагины типа Redirection, которые позволяют импортировать и контролировать перенаправления с удобным интерфейсом.
  • Если у вас много товаров и частые изменения URL, храните редиректы в отдельной таблице или используйте transient API для кеширования, чтобы не нагружать сайт.

Сравнение вариантов реализации редиректов после изменения URL товара

МетодПреимуществаНедостаткиПример использования
Код в functions.php Быстрая настройка, полный контроль Требует навыков, возможны ошибки, нагрузка при некорректной реализации Пример кода выше
Плагин Redirection Удобный интерфейс, логирование, импорт/экспорт Дополнительный плагин, может влиять на скорость Установка через админку, настройка правил
Редиректы на уровне сервера (htaccess/nginx) Максимальная производительность, отсутствие нагрузки на WP Требует доступа к серверу, сложность настройки для динамических URL Правила в .htaccess или конфигурации nginx

Для большинства магазинов WooCommerce оптимальным будет комбинирование плагина для управления редиректами с базовой автоматизацией через код, как описано выше.

WooCommerce: автоматическое удаление неактивных товаров по дате последнего изменения
02.05.2026
WooCommerce: автоматическое удаление товаров с нулевым остатком без плагинов
12.06.2026
Как удалить или изменить URL страницы в WordPress без перенаправления
19.01.2026
Как создать автоматический импорт постов в WordPress из внешнего источника
15.02.2026
WooCommerce: автоматическое изменение цены при низком остатке товара
27.06.2026