Я работаю над сценарием для импорта товаров из простого текстового файла, предоставленного мне третьей стороной. Я успешно импортировал продукты, используя объект WC_Product
, например:
//new product
$objProduct = new WC_Product();
$objProduct->set_status("publish");
$objProduct->set_catalog_visibility('visible');
$objProduct->set_sku($product[SKU]);
//and so on
//edit existing product
$product_id = wc_get_product_id_by_sku($product[SKU]);
$objProduct = wc_get_product( $product_id );
$objProduct->set_status("publish");
//...
Проблема, с которой я сталкиваюсь, заключается в том, что я не могу найти способ добавить марку к продукты . При импорте из файла CSV мне удалось импортировать марку с помощью фрагмента кода, который я нашел в Интернете, который работает на хуке woocommerce_product_import_inserted_product_object
:
public function process_import( $object, $data ) {
if( isset( $data['product_brand'] ) ){
wp_delete_object_term_relationships( $object->get_id(), 'product_brand' );
$brands = explode( ',', $data['product_brand'] );
foreach( $brands as $brand ) wp_set_object_terms( $object->get_id(), $brand, 'product_brand', true );
}
return $object;
}
Я пытался использовать wp_set_object_terms
, но получаю ошибка "неверная таксономия". И я также пробовал разные способы, и ни один из них не работает, и нет документации об этом.
Вот некоторые из способов, которые я попробовал:
$objProduct->set_attributes(['product_brand' => $brandId]);
$objProduct->set_attributes(['product_brand' => array($brandId) ]);
$objProduct->set_meta_data(['product_brand' => $brandId]);
$objProduct->set_meta_data(['product_brand' => array($brandId) ]);
$objProduct->set_prop('product_brand', $brandId);
$objProduct->set_prop('product_brand', array($brandId));
Есть идеи, как мне установить марку? Я уже ничего не понимаю и застрял там.
PS: я пытался использовать оба, id и название бренда (строка).
PS2: Мой сценарий работает на add_action( 'init', function(){//...})
, поэтому все должно быть доступно.
Спасибо!