@easycode
не боюсь задавать глупые вопросы ))

Как записать несколько значений для одного атрибута товара в WooCoommerce?

есть такой код для записи атрибутов товаров в Woocommercе:

<?php

function save_wc_custom_attributes($post_id, $custom_attributes) {
    foreach ($custom_attributes as $name => $value) {
        $product_attributes[] = array(
            'name' => htmlspecialchars( stripslashes( $name ) ), // set attribute name
            'value' => $value, // set attribute value
            'position' => 1,
            'is_visible' => 1,
            'is_variation' => 0,
            'is_taxonomy' => 0,
        );
    }
    update_post_meta($post_id, '_product_attributes', $product_attributes);
}

// пример записи значений типа текст, для товара с ID = $id
$_product_attributes = array();
$_product_attributes['pa_weight'] = '140';                                    
$_product_attributes['pa_color'] = 'red';
save_wc_custom_attributes($id, $_product_attributes);


и всё отлично работает для атрибутов типа текст, но что делать с записью атрибутов типа "Выбор"?

я уже пробовал по разному: - передавал $value в виде массива - получал ошибку - передавал значение в виде строке с разделителями: , и | - передавал строку с сериализованным масссивом значений

ничего не получается....
  • Вопрос задан
  • 349 просмотров
Решения вопроса 1
@easycode Автор вопроса
не боюсь задавать глупые вопросы ))
Разобрался сам, вот код:

function save_wc_custom_attributes($post_id, $custom_attributes) {
    foreach ($custom_attributes as $name => $value) {
        $product_attributes[] = array(
            'name' => htmlspecialchars( stripslashes( $name ) ), // set attribute name
            'value' => $value, // set attribute value
            'position' => 1,
            'is_visible' => 1,
            'is_variation' => 0,
            'is_taxonomy' => is_array($value) ? 1 : 0,
        );
    }
    update_post_meta($post_id, '_product_attributes', $product_attributes);
}

// пример записи значений типа текст, для товара с ID = $id
$_product_attributes = array();
$_product_attributes['pa_weight'] = '140';        

// $_product_attributes['pa_color'] = 'red'; 

// допустим, нам нужно записать значения разных цветов:
$colors = array('red', 'green', 'yellow');

// записываем:
wp_set_object_terms($id, $colors, 'pa_color', false);
// обновляем такие свойства атрибута как: position, is_visible, is_taxonomy
$_product_attributes['pa_color'] = $colors;


save_wc_custom_attributes($id, $_product_attributes);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы