Автоматическое добавление атрибутов и вариаций к товарам WooCommerce

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

При создании большого количества товаров с вариациями в WooCommerce ручное добавление атрибутов и вариаций занимает много времени и повышает риск ошибок. Автоматизация этого процесса с помощью PHP-кода позволяет создавать товары с вариациями программно, что ускоряет наполнение магазина и снижает нагрузку на администратора.

Особенности работы с атрибутами и вариациями в WooCommerce

В WooCommerce атрибуты – это характеристики товара, например, цвет или размер. Вариации – комбинации этих атрибутов, которые создают конкретные варианты товара с собственными ценами, изображениями и запасами.

Чтобы создать вариативный товар, необходимо:

  • Создать атрибуты и присвоить им термины (значения).
  • Добавить атрибуты к товару и отметить параметр "Использовать для вариаций".
  • Создать вариации комбинаций атрибутов.

Пошаговое решение: добавление атрибутов и вариаций через код

1. Создание атрибута с терминами (если атрибуты еще не созданы)

function create_product_attribute( $name, $slug, $terms = [] ) {
    if ( ! taxonomy_exists( $slug ) ) {
        wc_create_attribute([
            'name'         => $name,
            'slug'         => $slug,
            'type'         => 'select',
            'order_by'     => 'menu_order',
            'has_archives' => false,
        ]);
        register_taxonomy(
            $slug,
            'product',
            array(
                'hierarchical' => true,
                'label' => $name,
                'query_var' => true,
                'rewrite' => false,
            )
        );
    }

    foreach ( $terms as $term_name ) {
        if ( ! term_exists( $term_name, $slug ) ) {
            wp_insert_term( $term_name, $slug );
        }
    }
}

Пример вызова:

create_product_attribute( 'Цвет', 'pa_color', ['Красный', 'Синий', 'Зеленый'] );

2. Добавление атрибутов к товару и создание вариационного товара

function create_variable_product_with_attributes() {
    $product = new WC_Product_Variable();
    $product->set_name('Пример вариативного товара');
    $product->set_status('publish');
    $product->set_catalog_visibility('visible');
    $product_id = $product->save();

    // Добавляем атрибут "Цвет"
    $attribute = new WC_Product_Attribute();
    $attribute->set_id( wc_attribute_taxonomy_id_by_name( 'pa_color' ) );
    $attribute->set_name( 'pa_color' );
    $attribute->set_options( ['Красный', 'Синий', 'Зеленый'] );
    $attribute->set_position( 0 );
    $attribute->set_visible( true );
    $attribute->set_variation( true );

    $product->set_attributes( [ $attribute ] );
    $product->save();

    return $product_id;
}

3. Создание вариаций с заданными атрибутами

function create_variations_for_product( $product_id ) {
    $product = wc_get_product( $product_id );
    $variations_data = [
        ['attributes' => ['pa_color' => 'Красный'], 'price' => 1000],
        ['attributes' => ['pa_color' => 'Синий'], 'price' => 1100],
        ['attributes' => ['pa_color' => 'Зеленый'], 'price' => 1050],
    ];

    foreach ( $variations_data as $variation_data ) {
        $variation = new WC_Product_Variation();
        $variation->set_parent_id( $product_id );
        $variation->set_attributes( $variation_data['attributes'] );
        $variation->set_regular_price( $variation_data['price'] );
        $variation->save();
    }
}

Вызов функций для создания товара и вариаций:

$product_id = create_variable_product_with_attributes();
create_variations_for_product( $product_id );

Как проверить, что автоматизация сработала

  • В админке WooCommerce откройте список товаров и найдите созданный вариативный товар.
  • Откройте редактор товара и убедитесь, что атрибут "Цвет" добавлен и отмечен для вариаций.
  • Проверьте вкладку "Вариации" – должны быть созданы три вариации с разными цветами и ценами.
  • На фронтенде товара проверьте, что можно выбрать цвет и меняется цена.

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

  • Атрибут не отображается как вариация: проверьте, что у атрибута установлен set_variation(true) и он добавлен в товар.
  • Термины атрибута не создаются: убедитесь, что имя таксономии начинается с pa_ и используется правильный слаг.
  • Вариации не создаются или не сохраняются: проверьте корректность ключей массива атрибутов (например, pa_color) и что термины есть в таксономии.
  • Продукт не отображается: проверьте статус товара, должен быть publish или private.

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

  • Вызовы функций создания атрибутов и товаров делайте только в административной части и один раз (например, через WP-CLI или при активации плагина), чтобы не создавать дубли.
  • Для массового импорта товаров лучше использовать WP-CLI или специализированные плагины с поддержкой вариаций.
  • Кэшируйте результаты запросов таксономий и терминов при необходимости.
  • Используйте транзакции базы данных при массовом создании товаров, чтобы избежать частичных записей.

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

МетодПреимуществаНедостатки
Ручное создание через админку Простота, визуальный контроль Долго, риск ошибок при большом количестве
Импорт CSV (например, через плагин) Быстрое массовое добавление Сложность настройки, может требовать платные плагины
Программное создание через PHP (как в статье) Гибкость, интеграция в процессы, автоматизация Требует знаний программирования, возможны ошибки при неправильном коде
Как удалить старые медиа файлы из библиотеки WordPress
08.12.2025
Автоматический анализ логов в WordPress: практические примеры и решения
04.01.2026
Автоматическое создание счетов-фактур в WooCommerce: практическое руководство
18.04.2026
Как оптимизировать работу AI-плагинов в WordPress
21.02.2026
WooCommerce: автоматическое удаление неактивных заказов через код
05.06.2026