Woocommerce: добавление варианта к существующему продукту с существующими атрибутами

Я пытаюсь выяснить, как добавить вариант к существующему продукту, который изначально не является переменным продуктом.

Таким образом, у меня есть товарная рубашка, и я получаю еще одну из тех, которые есть в наличии в другом цвете, поэтому мой импортер должен добавить новый вариант в этот существующий продукт.

wp_set_object_terms ($product_id, 'black', 'pa_color', 1);

$attr_data = Array(
'pa_color'=>Array(
'name' => 'pa_color',
'value' => '',
'is_visible' => '1',
'is_variation' => '1',
'is_taxonomy' => '1'
)
);
update_post_meta($product_id, '_product_attributes', $attr_data);

Это добавляет цвет к моему продукту, но уничтожает все мои существующие атрибуты на продукте. Извлечение существующих _product_attributes просто дает мне сериализованные атрибуты, поэтому просто добавление нового варианта поверх всего не работает.

Есть идеи?

4

Решение

В основном проблема в том, что product_attribute не является единственной переменной, и кажется, что в wp_set_object_terms нет слияния

Я решил свою проблему следующим образом:

wp_set_object_terms ($product_id, 'black', 'pa_color', 1);

$attr_data = Array(
'pa_color'=>Array(
'name' => 'pa_color',
'value' => '',
'is_visible' => '1',
'is_variation' => '1',
'is_taxonomy' => '1'
)
);

$product = new WC_Product($product_id);

update_post_meta( $product_id, '_product_attributes', array_merge($product->get_attributes(), $attr_data) );
1

Другие решения

У меня возникли те же проблемы, и только что решенные.

получить term_id для product_type = variable

/**
SELECT $wpdb->terms.term_id FROM $wpdb->terms, $wpdb->term_taxonomy
WHERE name = 'variable'
AND taxonomy = 'product_type'
AND $wpdb->terms.term_id = $wpdb->term_taxonomy.term_id
LIMIT 1
**/

$variable_term_id  = 4;

wp_set_object_terms( $product_id, $variable_term_id, 'product_type' , true); //for variable product

🙂

-1

По вопросам рекламы [email protected]