Проблема здесь не в добавлении атрибутов по отдельности. Я думаю, проблема в том, чтобы связать добавленные параметры атрибута с правильными терминами. Как видно на рисунках ниже, параметры атрибутов установлены правильно, но они не связаны со своими терминами (как видно на первом рисунке [текст вместо параметра атрибута серого фона, как показано на третьем рисунке]), хотя я вручную запускаю set_object_terms для каждого продукта, и связь в базе данных установлена правильно.
Код: Выделить всё
foreach($terms as $term_id) {
$term = get_term( $term_id );
$term_name = $term->name;
$term_taxonomy = $term->taxonomy;
$term_slug = $term->slug;
if( ! has_term( $term_name, $term_taxonomy, $parent_id ) ) {
$set_terms = wp_set_object_terms($parent_id, $term_slug, $term_taxonomy, true );
}
}

и я необходимо вручную нажать «Сохранить атрибуты» в панели администратора WordPress > изменить продукт...
[img]https://i.sstatic.net /XSqHH.jpg[/img]
чтобы он действительно правильно зарегистрировался в системе, как можно увидеть здесь.

Основная проблема заключается в том, что в текстовой форме, как показано на первом снимке экрана, атрибуты на самом деле не видны в магазине, обращенном к пользователю, и они также недоступны в вариантах продукта.
Я использую методы woocommerce для обновления продуктов. Вот пример кода:
Код: Выделить всё
$attribute_object = new WC_Product_Attribute();
$attribute_object->set_name( $attribute_name );
$attribute_object->set_options( $value );
$attribute_object->set_visible(1);
$attribute_object->set_variation(1);
$attribute_object->set_position(0);
$attribute_object->set_id( 0 );
$new_product_attributes[$attribute_name] = $attribute_object;
$new_product->set_attributes($new_product_attributes);
$new_product->save();
Подробнее здесь: https://stackoverflow.com/questions/632 ... -front-end
Мобильная версия