Я разрабатываю тему для 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/>';
}
?>
И я понимаю, но я не знаю, полезно ли это, когда акции падают.
Дан переменный продукт с несколькими вариантами, чтобы получить количество запаса каждого варианта:
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, я думаю, что могут быть лучшие способы с точки зрения производительности, но не такие чистые.
Да, ваш путь — это правильный способ получить запас вариации.
Пока вы получаете новые варианты из базы данных каждый раз, когда вам нужно использовать количество запаса, вы должны быть в порядке с этим методом.
******* 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.
Пожалуйста, уточните, если я неправильно понимаю вопрос.
Хорошо, с этим я могу взять количество.
Но это не полезно.
С помощью этого я могу подготовить код, который составляет разные предложения, по одному для каждого продукта, и показать его, когда вариант будет выбран с помощью jquery.
Но это не очень хорошая идея. Это не элегантно.
Я хотя существовал что-то вроде
$product->get_variation_price()
Этот код возвращает цену изменения, когда выбрано.
Но
$product->get_stock_quantity();
не меняется, когда выбран вариант, потому что покажи мне глобальный запас.
Может кто-нибудь дать мне элегантное решение?
Или не существует?
ОБНОВИТЬ
Наконец то использовал
$product->get_available_variations()
Чтобы получить данные.
После этого я сгенерировал HTML-код, скрытый с помощью CSS, и показываю его, когда нажимаю на цвет варианта.
Код ниже напечатает все атрибуты с ‘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;
?>