WooCommerce: автоматическое изменение названия вариации при обновлении атрибутов

Почему важно автоматически обновлять названия вариаций в WooCommerce

В стандартном WooCommerce название вариации формируется из имени товара и перечисления выбранных атрибутов, например: "Футболка – Размер: M, Цвет: Красный". При изменении атрибутов вручную название не обновляется автоматически, что может привести к некорректному отображению и путанице для покупателей и администраторов.

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

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

  • В админке WooCommerce в списке вариаций отображаются старые названия, не соответствующие текущим атрибутам.
  • На фронтенде в карточках товаров вариации названы некорректно.
  • Изменения атрибутов не отражаются в имени вариации после обновления товара.

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

1. Создание функции для генерации имени вариации

Используем стандартную функцию WooCommerce wc_get_formatted_variation для получения корректного текста вариации:

function wpset_update_variation_title( $variation_id ) {
    $variation = wc_get_product( $variation_id );
    if ( ! $variation || 'variation' !== $variation->get_type() ) {
        return;
    }

    $parent = wc_get_product( $variation->get_parent_id() );
    if ( ! $parent ) {
        return;
    }

    // Получаем отформатированное название вариации
    $variation_attributes = $variation->get_variation_attributes();
    $formatted = wc_get_formatted_variation( $variation, true ); // true — с html

    // Удаляем html теги для имени вариации
    $formatted_plain = strip_tags( $formatted );

    // Формируем новое название
    $new_title = $parent->get_name() . ' – ' . $formatted_plain;

    // Обновляем название вариации
    wp_update_post( [
        'ID' => $variation_id,
        'post_title' => $new_title,
    ] );
}

2. Привязка функции к хуку сохранения вариации

Подключаем функцию к действию woocommerce_save_product_variation, которое вызывается при сохранении вариации в админке:

add_action( 'woocommerce_save_product_variation', 'wpset_update_variation_title', 10, 1 );

3. Массовое обновление старых вариаций (опционально)

Для обновления всех существующих вариаций можно запустить скрипт один раз, например через WP-CLI или временно добавить код:

function wpset_update_all_variation_titles() {
    $args = [
        'post_type'      => 'product_variation',
        'posts_per_page' => -1,
        'post_status'    => 'publish',
        'fields'         => 'ids',
    ];
    $variation_ids = get_posts( $args );

    foreach ( $variation_ids as $variation_id ) {
        wpset_update_variation_title( $variation_id );
    }
}

// Запустить один раз
// wpset_update_all_variation_titles();

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

  • Зайдите в админку WooCommerce → Товары, откройте товар с вариациями.
  • Измените атрибут вариации, сохранив изменения.
  • Проверьте, что название вариации обновилось и отображает актуальные атрибуты.
  • На фронтенде убедитесь, что в карточке товара название вариации соответствует новым атрибутам.

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

  • Название не обновляется после сохранения вариации
    Проверьте, что функция подключена к правильному хуку woocommerce_save_product_variation и что нет конфликтов с другими плагинами, которые могут отменять сохранение.
  • В названии появляются HTML-теги
    Используйте strip_tags() для удаления HTML из вывода wc_get_formatted_variation().
  • Функция вызывает ошибки или замедляет админку
    Убедитесь, что функция вызывается только при сохранении вариации, а не при каждом запросе. Для массового обновления используйте WP-CLI или отдельный скрипт.

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

  • Не запускайте массовое обновление названий на живом сайте без резервного копирования и теста на тестовом окружении.
  • Кэширование: если сайт использует объектный кэш или внешние системы (Redis, Memcached), очистите кэш после массового обновления.
  • Безопасность: убедитесь, что обновление названий вариаций выполняется только администраторами или пользователями с необходимыми правами.

Сравнение вариантов автоматизации обновления названий вариаций

МетодПреимуществаНедостатки
Ручное редактирование названийПросто, без кодаТрудозатратно, ошибки, не масштабируется
Код на хуке woocommerce_save_product_variationАвтоматизация, точность, масштабируемостьТребует навыков разработки, риск ошибок без тестирования
Плагины для управления вариациямиГотовые решения, удобный интерфейсМогут замедлять сайт, часто платные
Как удалить неиспользуемые таксономии из WordPress через код
25.02.2026
Автоматическое удаление неактуальных товаров в WooCommerce
21.04.2026
Как отключить системные email-уведомления WordPress без плагинов
07.04.2026
Как удалить неиспользуемые таксономии в WordPress без плагинов
06.01.2026
Как удалить неиспользуемые медиа файлы и оптимизировать медиабиблиотеку в WordPress
04.03.2026