wplinks.ru wordpress WPLinks.ru

Автоматическое изменение URL товаров WooCommerce при изменении названия

В чем проблема с URL товаров при изменении названия?

В WooCommerce по умолчанию URL товара формируется на основе его названия (slug). При изменении названия товара URL не обновляется автоматически, что приводит к рассинхронизации и появлению 404 ошибок или необходимости вручную редактировать постоянные ссылки. Это особенно критично для крупных магазинов, где частые изменения названий товаров происходят в рамках обновления ассортимента или корректировок.

Диагностика проблемы

Если после изменения названия товара его URL не меняется, проверьте:

  • Редактируется ли поле «Ярлык» (slug) товара вручную – часто оно остается без изменений.
  • Настройки постоянных ссылок в WordPress: Настройки > Постоянные ссылки – они должны быть корректно настроены.
  • Отсутствие плагинов или кода, который блокирует изменение slug.

Для проверки, что URL не изменился, откройте страницу редактирования товара и сравните поле «Ярлык» с текущим названием.

Пошаговое решение: автоматическое обновление slug при изменении названия

Реализуем автоматическое обновление slug товара при изменении его названия с помощью добавления кода в functions.php дочерней темы или в плагин-сниппет.

add_action('save_post_product', 'auto_update_product_slug_on_title_change', 10, 3);
function auto_update_product_slug_on_title_change($post_ID, $post, $update) {
    // Проверяем, что это обновление, а не создание
    if (!$update) {
        return;
    }
    // Берем текущее название и ярлык
    $title = $post->post_title;
    $slug = $post->post_name;
    // Генерируем новый slug из названия
    $new_slug = sanitize_title($title);
    if ($slug !== $new_slug) {
        // Обновляем slug товара
        wp_update_post(array(
            'ID' => $post_ID,
            'post_name' => $new_slug
        ));
        // Очистка кэша постоянных ссылок
        flush_rewrite_rules(false);
    }
}

Этот код при сохранении товара автоматически обновляет поле post_name (slug), если название изменилось.

Как проверить, что решение работает?

  • Создайте тестовый товар с названием «Товар А».
  • Перейдите к редактированию товара и измените название на «Товар Б».
  • Сохраните изменения и посмотрите, изменился ли URL товара в админке и на фронте.
  • Если URL обновился, значит код работает корректно.

Частые ошибки и их устранение

  • Ничего не меняется после сохранения: возможно, при сохранении не вызывается хук save_post_product из-за кэширования. Попробуйте временно отключить кэш-плагины и проверить.
  • Появляются дубликаты URL: если новый slug уже существует, WordPress добавит суффикс. Для предотвращения конфликтов нужно проверять уникальность slug с помощью функции wp_unique_post_slug().
  • Изменение slug ломает SEO-ссылки: при автоматическом изменении URL рекомендуется настроить 301 редиректы со старых URL на новые, например, с помощью плагина Redirection или собственного кода.

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

  • Добавляйте код только в дочернюю тему или отдельный плагин, чтобы избежать потери при обновлениях.
  • Вызывайте flush_rewrite_rules() только один раз после обновления slug — массовый вызов может замедлить сайт.
  • Перед массовым применением решения на большом магазине создайте резервную копию базы данных.

Альтернативы: плагины и собственный код

МетодПреимуществаНедостатки
Собственный код (как выше)Тонкая настройка, отсутствие дополнительных плагиновТребует тестирования, возможны ошибки при сложных запросах
Плагин "Permalink Manager Lite"Управление URL, массовое редактированиеМожет конфликтовать с кастомным функционалом, требует изучения интерфейса
Ручное редактирование slugПростотаТрудозатратно, риск пропуска товаров
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше