2015-05-28 40 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主題和變化數量)?

我希望你能幫助我。

謝謝!

更新:我試圖讓最大數量與此:

<?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; 
?> 
相關問題