17

我正在为 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/>';
    }
?>

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

4

5 回答 5

15

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

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 找到的最干净的方法,我认为在性能方面可能有更好的方法,但没有那么干净。

于 2016-03-05T16:50:47.773 回答
3

下面的代码将打印带有“ 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;
?>
于 2016-10-08T07:32:41.253 回答
2

是的,您的方式是获取变体库存的正确方式。

只要您每次需要使用其库存数量时都从数据库中获取新的变化,那么您应该可以使用此方法。

*******更新

我不确定我是否理解您要执行的操作。您应该能够抓住这两种变体股票并将它们发送到 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。

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

于 2015-05-28T20:04:22.473 回答
1

好的,有了这个我可以拿数量。但是用处不大。

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

但这不是一个好主意。不优雅。我虽然存在类似的东西

$product->get_variation_price()

此代码在选择时返回变化价格。但

$product->get_stock_quantity();

选择变量时不会更改,因为向我显示全球库存。

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

更新

最后我用

$product->get_available_variations()

来获取数据。

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

于 2015-05-29T10:40:34.600 回答
1
add_action('woocommerce_before_add_to_cart_button','get_selected_variation_stock');
函数 get_selected_variation_stock() {
    全球$产品;

    if ($product->is_type('变量'))
    {
        $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();

            回声 $attribute_pa_colour 。“:”。$股票。" ";

        }
    }

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

于 2020-07-01T15:08:42.913 回答