我正在研究一个脚本,用于从第三者提供给我的纯文本文件中导入产品。
我已经成功使用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(){//...})
上运行,因此所有内容都应该可用。
谢谢!
答案 0 :(得分:0)
我终于设法将自定义分类法添加到产品中。问题是在init
挂接过程中未注册分类法。
我将其更改为wp_loaded
挂钩。到那时,插件,主题等已准备就绪。
我用来设置它的方法是wp_set_post_terms
。