Ответ Дэниелса работает, не будет решать, правильно или неправильно, однако, если вы хотите добавить значения как термин таксономии по атрибутам, вам необходимо адаптировать код, как показано ниже (set is_taxonomy = 1). В противном случае Woocommerce видит это как обычное мета-поле (?). Он по-прежнему добавляет значение по атрибутам. Это будет работать только для строк. Для значений, которые являются массивами, код должен быть адаптирован.
Кроме того, он использует wp_set_object_terms, который также предлагает @Anand. Я использовал это, потому что вся документация, которую я мог найти, привела к тому, что это нужно было использовать. Однако, если вы используете только wp_set_object_terms, я не мог видеть атрибуты на экране редактирования продукта. Использование информации из обоих ответов и чтение по этому вопросу привело к решению.
Вам нужно будет настроить код на такие вещи, как вариации продукта.
/*
* Save Woocommerce custom attributes
*/
function save_wc_custom_attributes($post_id, $custom_attributes) {
$i = 0;
// Loop through the attributes array
foreach ($custom_attributes as $name => $value) {
// Relate post to a custom attribute, add term if it does not exist
wp_set_object_terms($post_id, $value, $name, true);
// Create product attributes array
$product_attributes[$i] = array(
'name' => $name, // set attribute name
'value' => $value, // set attribute value
'is_visible' => 1,
'is_variation' => 0,
'is_taxonomy' => 1
);
$i++;
}
// Now update the post with its new attributes
update_post_meta($post_id, '_product_attributes', $product_attributes);
}
Затем вызовите функцию:
$custom_attributes = array('pa_name_1' => $value_1, 'pa_name_2' => $value_2, 'pa_name_3' => $value_3);
save_wc_custom_attributes($post_id, $custom_attributes);
Благодарим вас за отправку кода Daniel & amp; Ананд. Это очень помогло мне.