我正在开发一个插件,它扩展了 WooCommerce 导入程序,以便我可以在一个步骤中创建一个包含所有变体的可变产品。为此,我需要更新产品属性并为每个属性启用变体复选框:
/**
* Process the data read from the CSV file
*
* @param WC_Product|null|false $product
* @param array $data
*
* @return WC_Product|null|false
*/
add_filter('woocommerce_product_import_pre_insert_product_object', 'filter_woocommerce_product_import_pre_insert_product_object', 10, 2);
function filter_woocommerce_product_import_pre_insert_product_object($product, array $data): object {
$product_attributes = $product->get_attributes();
if (!empty($product_attributes) && $product->is_type('variable')) {
error_log(print_r($product_attributes, true));
/**
* @var WC_Product_Attribute $product_attribute
*/
foreach ($product_attributes as $product_attribute) {
$product_attribute_id = $product_attribute->get_id();
wc_update_attribute($product_attribute_id, [
'variation' => '1'
]);
}
error_log(print_r($product->get_attributes(), true));
}
return $product;
}
代码被调用,但不知何故它没有更新我的复选框。我真的不知道怎么了。日志或任何函数调用中都没有错误。