Программное добавление вариативного товара в WooCommerce

5 дек. 2012 г., 12:24:04
Просмотры: 19.7K
Голосов: 5

Как сделать товар вариативным и добавить вариации? Обрабатываются ли вариации как атрибуты?

Этот код создает товар и добавляет атрибут (размер XL), но я не могу сделать этот атрибут вариацией с индивидуальной ценой и т.д.

Это функция, вызываемая через AJAX:

function createnewproduct(){
$new_post = array(
    'post_title' => "Custom Variable",
    'post_content' => 'Lorem ipsum dolor sit amet...',
    'post_status' => 'publish',
    'post_type' => 'product'
);

$skuu = randomsku('csm','custom',6);
$post_id = wp_insert_post($new_post);
update_post_meta($post_id, '_sku', $skuu );
update_post_meta( $post_id, '_price', "25" );

// Сделал товар вариативным, но вариации не добавляются!
wp_set_object_terms ($post_id, 'variable', 'product_type');
wp_set_object_terms( $post_id, 'XL', 'pa_size' );
// Все работает, но
// Как сделать атрибут "pa_size" вариацией?

update_post_meta( $post_id, '_visibility', 'search' );
update_post_meta( $post_id, '_stock_status', 'instock');

}

Эта функция объявляет в WooCommerce, что новый товар является вариативным и добавляет атрибут "размер". Проблема в том, как указать WooCommerce, что атрибут "размер" должен быть вариацией.

2
Комментарии

Извините, я должен был сослаться на это в своем первом комментарии (удален). :::: Вы пробовали использовать wp_set_object_terms вне AJAX-запроса? А как насчет $append аргумента? :::: В продукте, который уже имеет вариацию, как эта информация хранится в базе данных? (И последний вопрос — это просто идея для диагностики. По крайней мере, это то, что я бы тоже попробовал...)

brasofilo brasofilo
5 дек. 2012 г. 13:32:52

1. Пожалуйста, обновляйте свой ответ, а не оставляйте комментарии. 2. Используйте прописные/строчные буквы. В конце концов, это не чат, а Q/A, который должен быть удобным для чтения справочником для будущих пользователей. 3. Почему проблема не в AJAX? 4. Если проблема не в AJAX и никто пока не понял ваш вопрос, возможно, стоит переработать формулировку вопроса.

kaiser kaiser
5 дек. 2012 г. 13:41:22
Все ответы на вопрос 1
0

Нашел решение, как сделать атрибут товара вариацией. Допустим, у нас есть:

wp_set_object_terms( $post_id, 'XL', 'pa_size' );

Выше приведен пользовательский атрибут (атрибут размера). Чтобы сделать его вариацией, нужно выполнить следующее:

$thedata = Array('pa_size'=>Array(
        'name'=>'pa_size',
        'value'=>'',
        'is_visible' => '1', 
        'is_variation' => '1',
        'is_taxonomy' => '1'
        ));
update_post_meta( $post_id,'_product_attributes',$thedata);
6 дек. 2012 г. 11:55:46