Очень интересная ошибка, плагина «Woocommerce CSV importer». Возникает при импорте товара, притом что с начало был сделан экспорт, потом файл полученный при экспорте импортирую обратно. То есть плагину не нравится его же файл.
Проанализировав файл импорта, выяснилось что ошибка возникает как раз на импорте вариативных товаров.
Протрасировав ошибку, добавляя в код инструкцию по выводу в лог
$this->logger->log ('метка');
выявил что сбой идет при создании класса товара, в файле
/wp-content/plugins/woocommerce-csvimport/include/class-woocsv-product.php
public function fill_in_data () { . . . $test = new WC_Product($tempID); // - место сбоя . .
то есть при попадании на вариативный товар создавался класс WC_Product, а полазим на просторах инета, нашел что есть для вариативных товаров свой класс WC_Product_Variation.
Решение
Берем и создаем следующее условие
public function fill_in_data () { . . . $post_type = $this->raw_data[ array_search ('post_type', $this->header) ]; if ($post_type == 'product'){ $test = new WC_Product($tempID); } if ($post_type == 'product_variation'){ $test = new WC_Product_Variation($tempID); } . . . }
Правим файл class-woocsv-import.php
добавляем новые поля для сопоставления
public $fields = array ( 0 => 'sku', 1 => 'post_name', 2 => 'post_status', 3 => 'post_title', 4 => 'post_content', 5 => 'post_excerpt', 6 => 'category', 7 => 'tags', 8 => 'stock', 10 => 'regular_price', 11 => 'sale_price', 12 => 'weight', 13 => 'length', 14 => 'width', 15 => 'height', 17 => 'tax_status', 18 => 'tax_class', 19 => 'stock_status', // instock, outofstock 20 => 'visibility', // visible, catelog, search, hidden 21 => 'backorders', // yes,no 22 => 'featured', // yes,no 23 => 'manage_stock', // yes,no 24 => 'featured_image', 25 => 'product_gallery', 26 => 'shipping_class', 27 => 'comment_status', //closed, open 28 => 'change_stock', // +1 -1 + 5 -8 29 => 'ID', 30 => 'ping_status', // open,closed 31 => 'menu_order', 32 => 'post_author', //user name or nice name of an user 33 => 'post_date', 34 => 'product_type', // - добавляем 35 => 'post_type', // - добавляем 36 => 'post_parent', // - добавляем 37 => 'price' // - добавляем );
После этого плагин уже не ругается и импортирует вариативный товар.
Полезные ссылки
https://docs.woocommerce.com/wc-apidocs/class-WC_Product.html
https://docs.woocommerce.com/wc-apidocs/class-WC_Product_Variation.html