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
04.03.2026
Как удалить неиспользуемые метаполя в WordPress: практическое руководство
12.02.2026
Автоматическое удаление неактивных товаров и вариаций в WooCommerce
08.07.2026
Автоматический импорт продуктов из CSV в WooCommerce с помощью кода
24.12.2025
Как автоматически удалять старые записи в WordPress
03.04.2026