如何获得变异的库存数量woocommerce

时间:2015-05-28 18:38:20

标签: php woocommerce stock variations variation

我正在为wordpress和woocommerce开发一个主题。

我需要show variation的股票。

<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/>';
    }
?>

我明白了,但是当股票价格下跌时我不知道这是否有用。

5 个答案:

答案 0 :(得分:4)

给定具有多种变化的可变产品以获得每个变异库存数量:

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 :(得分: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 _&#34; your-attribute-name&#34;将库存水平分配给关联数组。作为关键

现在我可以将我的数组发送到jQuery了。

请澄清我是否误解了这个问题。

答案 2 :(得分:1)

好的,有了这个,我可以拿出数量。 但是没用。

有了这个,我可以准备一个代码,制作不同的句子,每个产品一个,并在使用jquery选择变体时显示。

但这不是个好主意。不优雅。 我虽然存在像

这样的东西
$product->get_variation_price()

此代码会在选中时返回变化价格。 但是

$product->get_stock_quantity();

在选择变体时不会更改,因为显示全局库存。

有人可以给我一个优雅的解决方案吗? 还是不存在?

<强>更新

最后我用了

$product->get_available_variations()

获取数据。

有了这个,我生成了用css隐藏的html代码,当我点击变体的颜色时我会显示它。

答案 3 :(得分:1)

以下代码将使用&#39; is_in_stock &#39;打印所有属性。变量

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

答案 4 :(得分:0)

add_action( 'woocommerce_before_add_to_cart_button', 'get_selected_variation_stock' );
function get_selected_variation_stock() {
    global $product;

    if ($product->is_type( 'variable' ))
    {
        $available_variations = $product->get_available_variations();
        foreach ($available_variations as $key => $value)
        {
            $variation_id = $value['variation_id'];
            $attribute_pa_colour = $value['attributes']['attribute_pa_colour'];
            $variation_obj = new WC_Product_variation($variation_id);
            $stock = $variation_obj->get_stock_quantity();

            echo $attribute_pa_colour . ": " . $stock . " ";

        }
    }

使用此挂钩,您必须找出所有变体的库存数量以及其他变体的产品数据woocommerce。