Как установить бренд продукта при программном импорте продукта WooCommerce? - PullRequest
0 голосов
/ 17 марта 2020

Я работаю над сценарием для импорта товаров из простого текстового файла, предоставленного мне третьей стороной. Я успешно импортировал продукты, используя объект 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(){//...}), поэтому все должно быть доступно.

Спасибо!

1 Ответ

0 голосов
/ 18 марта 2020

Мне наконец-то удалось добавить собственную таксономию к продукту. Проблема состояла в том, что таксономии не были зарегистрированы во время init ловушки. Вместо этого я изменил его на wp_loaded hook. На этом этапе плагины theme, et c готовы. Метод, который я использовал, чтобы установить это wp_set_post_terms.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...