• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Решено Как программно добавить вариацию к товару

pton

Новичок
Здравствуйте!
Есть работающий магазин. Чуть больше 1000 товаров. В основном все товары вариативные. Организованы с одной вариацией. А во вкладке атрибуты (вручную) изменяется значения атрибутов. Т.е. если какой то размер товара закончился, то изменяем атрибуты.
Поставлена задача сделать возможность вводить количество для каждого размера, т.е. управлять запасами. Для этого надо добавить соответствующие вариации для каждого товара.
Я могу подгрузить файл ( CSV например) со списком товаров и читая его изменять существующую вариацию. Но,
ВОПРОС! Как добавить программно новую вариацию??

пробовал код:
Код:
    $product = new WC_Product();
    $product->set_parent_id(64);
    $product->set_sku('111-222-nnn');
    $product->set_menu_order(4);
    $product->save();
но он добавляет новый вариативный товар, а не вариацию к существующему.
Если посмотреть в БД, то добавленная запись имеет значение поля post_type = product. Изменив это значение на product_variation, товар становится вариацией. Но как это сделать программно через функции WooCommerce?
 

pton

Новичок
Решение нашел, может кому пригодится
Код:
        $_pv = new WC_Product_Variation();
        $_pv->set_parent_id($pID);
        $_pv->set_sku($_sku);
        $_pv->set_manage_stock('true');
        $_pv->set_stock_quantity($arSKU[$_sku]);
        $_pv->set_stock_status('instock');
        $_pv->set_status('publish');
        $_pv->set_regular_price( $regular_price );
        $_pv->set_sale_price( $sale_price );
        $_pv->set_menu_order(0);
        //$ar_attr = array();
        //$ar_attr['pa_razmer_obuvi'] = $arr[2];
        //$_pv->set_attributes($ar_attr);
        $_pv->set_attributes(array('pa_razmer_obuvi'=>$arPar[$_sku]));
        $_pv->save();
 
Сверху Снизу