Add WooCommerce product attribute without losing existings不能解决我的问题,因为我会手动创建一个包含所有现有属性的数组,而且它并不像我想要的那样通用,似乎是一种糟糕的做法.假设一个产品具有X个属性,其中X个属性的值为X,我想为该产品添加一个带有值的新属性,以下是我的try :
$modelagem = "desconhecida"; // new attribute value
$attribute_pa_at_modelagem_id = wc_attribute_taxonomy_id_by_name('at-modelagem'); // new attribute, already registered in wordpress NOT IN THE PRODUCT
$modelagem_attribute = new WC_Product_Attribute(); // new attribute object
$modelagem_attribute->set_id($attribute_pa_at_modelagem_id); // setting attribute configs
$modelagem_attribute->set_name('pa_at-modelagem'); // setting attribute configs
$modelagem_attribute->set_options([$modelagem]); // setting attribute configs
$modelagem_attribute->set_visible(true); // setting attribute configs
$modelagem_attribute->set_variation(false); // setting attribute configs
$modelagem_attribute->set_position(0); // setting attribute configs
$existing_attributes = $product->get_attributes(); // taking existing attributes (IT'S EMPTY I DONT KNOW WHY)
$existing_attributes[] = $modelagem_attribute; // then appending new attribute to it
$product->set_attributes($existing_attributes); // IT ERASES ALL ATTRIBUTES
$product->save();
正如我所说的,上面的代码删除了给定产品的所有属性和变化,而不管我需要一种方法来设置一个新的属性,而不是一次设置所有属性,这是一个不好的做法,可能会导致错误的变化.
另注:请忽略琐碎的问题,WooCommerce未加载,插件冲突等…