Задать вопрос
@PavelDrow

Как менять атрибуты товаров через плагин?

Работаю над плагином для замены необходимых атрибутов товаров по нужным параметрам. В данном случае использую получение групп товаров по объему (pa_size). Проблема в том, что товары вариативные и параметры изменяются только в параметрах по умолчанию. Для примера использую атрибут ширины, делаю следующим образом:

// Get all product sizes
            $terms = get_terms(array(
                'taxonomy' => 'pa_size',
                'hide_empty' => false,
            ));
        
            // // Iterate over all sizes
            foreach ($terms as $term) {
                // Get all products for the current size
                $products = wc_get_products(array(
                    'limit' => -1,
                    'tax_query' => array(array(
                        'taxonomy' => 'pa_size',
                        'field' => 'slug',
                        'terms' => array($term->slug),
                        'operator' => 'IN',
                    ))
                ));
        
                echo $term->slug;
                echo '<br>';
                echo ($products);
                echo '<br><br>';
        
        foreach ($products as $product) {
        
        $product->set_width(10);
        $product->save();
        }
        
    }

Проблема в том, что атрибут не меняется у всех вариаций товаров, только в той, что стоит по умолчанию, в чем может быть проблема?
  • Вопрос задан
  • 59 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@PavelDrow Автор вопроса
Разобрался сам, как менять дочерние продукты, работает, но не знаю насколько правильно, возможно есть более лучшие решения. просто получаю массив ID дочерних элементов и прохожусь по ним циклом

foreach ($products as $product) {
        
	$product->set_width(10);
	$product->save();

$childs = $product->get_children(array(
		'limit' => -1,
));

foreach ($childs as $child) {
$my_super_product = wc_get_product( $child );

$my_super_product->set_width(10);
$my_super_product->save();
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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