Как получить количество запаса вариации woocommerce

Я разрабатываю тему для WordPress и WooCommerce.

Мне нужно показать запас вариации.

<p class="stock-m13"><?php echo $product->get_stock_quantity(); ?></p>

(Вот: Как получить количество товара в woocommerce?) но этот код показывает мне только общее количество на складе, а не каждое количество отклонения.

Мне нужна другая функция, чтобы получить количество вариаций?
Или возможно, что мой код не завершен (я думаю, потому что я использовал тему «Двадцать пятнадцать» и показано количество вариантов)?

Я хотел бы, чтобы вы могли мне помочь.

Спасибо!!

ОБНОВЛЕНИЕ: я пытаюсь получить максимальное количество с этим:

<?php
foreach ($product->get_available_variations() as $key) {
echo $key['max_qty'] .'<br/>';
}
?>

И я понимаю, но я не знаю, полезно ли это, когда акции падают.

10

Решение

Дан переменный продукт с несколькими вариантами, чтобы получить количество запаса каждого варианта:

function get_stock_variations_from_product(){
global $product;
$variations = $product->get_available_variations();
foreach($variations as $variation){
$variation_id = $variation['variation_id'];
$variation_obj = new WC_Product_variation($variation_id);
$stock = $variation_obj->get_stock_quantity();
}
}

Это самый чистый способ, который я понял для WC 2.5, я думаю, что могут быть лучшие способы с точки зрения производительности, но не такие чистые.

4

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

Да, ваш путь — это правильный способ получить запас вариации.

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

******* UPDATEED

Я не уверен, что понимаю, что вы пытаетесь сделать. Вы должны просто иметь возможность взять оба варианта вариации и отправить их в jquery для игры.

$product_variable = new WC_Product_Variable($product->id);
$product_variations = $product_variable->get_available_variations();

foreach ($product_variations as $variation)  {
$stock[$variation['attribute_pa_variation-name']] = $variation['max_qty'];
}

Здесь я назначаю уровень запаса ассоциативному массиву с attribute_pa_ «your-attribute-name» в качестве ключа

Теперь я могу отправить свой массив в JQuery.

Пожалуйста, уточните, если я неправильно понимаю вопрос.

2

Хорошо, с этим я могу взять количество.
Но это не полезно.

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

Но это не очень хорошая идея. Это не элегантно.
Я хотя существовал что-то вроде

$product->get_variation_price()

Этот код возвращает цену изменения, когда выбрано.
Но

$product->get_stock_quantity();

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

Может кто-нибудь дать мне элегантное решение?
Или не существует?

ОБНОВИТЬ

Наконец то использовал

$product->get_available_variations()

Чтобы получить данные.

После этого я сгенерировал HTML-код, скрытый с помощью CSS, и показываю его, когда нажимаю на цвет варианта.

1

Код ниже напечатает все атрибуты с ‘is_in_stockпеременная

<?php
global $product;
$product_variations = $product->get_available_variations();

foreach ($product_variations as $variation)  {
$var_data = $variation['attributes'];
$var_data['in_stock'] = $variation['is_in_stock'];
}

//List all attributes with stock available or not array..
echo '<pre>';
print_r($var_data);
echo '</pre>';
die;
?>
1
По вопросам рекламы [email protected]