2015-05-28 6 views
8

Я разрабатываю тему для wordpress и woocommerce.Как получить количество запасов вариации woocommerce

Мне нужно наличие изменений вариации.

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

(здесь: How to get the stock quantity of an article from woocommerce?), но этот код только покажите мне глобальное количество штока, а не каждую величину вариации.

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

Желаю вам помочь.

спасибо !!

UPDATE: Я стараюсь, чтобы получить максимальное количество с этим:

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

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

ответ

1

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

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

Но это не очень хорошая идея. Не изящно. я, хотя существует что-то вроде

$product->get_variation_price() 

Этот код возврата цена изменение при выборе. Но

$product->get_stock_quantity(); 

не изменяются при выборе вариации, так как показывают мне глобальный запас.

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

UPDATE

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

$product->get_available_variations() 

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

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

2

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

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

******* 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_ «ваш атрибут-имя-» в качестве ключевого

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

Просьба пояснить, не ошибаюсь ли я в вопросе.

1

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

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, я думаю, что может быть более эффективными способами с точкой зрения производительности но не так чисто.

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; 
?>