【问题标题】:Get the stock quantity of each active variation in WooCommerce variable products获取 WooCommerce 可变产品中每个有效变体的库存数量
【发布时间】:2018-01-27 23:52:56
【问题描述】:

我需要在 Woocommerce 中显示可变产品的每个变体的库存数量

我用这个代码来显示库存数量:

<?php echo $product->get_stock_quantity(get_the_ID()); ?>

现在我有这个产品了:

衬衫有红色,蓝色代表可变产品。

“红衬衫”的库存量为3
“蓝衬衫”的库存量4

所以我需要展示:

蓝色 = 3 // 红色 = 4

我该怎么做?

【问题讨论】:

  • 你的问题不是很清楚,能不能试着解释一下?

标签: php wordpress woocommerce product variations


【解决方案1】:

您的产品具有不同的颜色变化和不同的库存数量。

因此,您需要为每个变体获取: - 变化库存数量: - 此变体的属性“pa_color”术语名称

假设你已经得到WC_Product_Variable对象$product,这里是代码:

if ($product->is_type( 'variable' )){

    // Get the available variations for the variable product
    $available_variations = $product->get_available_variations();

    // Initializing variables
    $variations_count = count($available_variations);
    $loop_count = 0;

    // Iterating through each available product variation
    foreach( $available_variations as $key => $values ) {
        $loop_count++;
        // Get the term color name
        $attribute_color = $values['attributes']['attribute_pa_color'];
        $wp_term = get_term_by( 'slug', $attribute_color, 'pa_color' );
        $term_name = $wp_term->name; // Color name

        // Get the variation quantity
        $variation_obj = wc_get_product( $values['variation_id'] );
        $stock_qty = $variation_obj->get_stock_quantity(); // Stock qty

        // The display
        $separator_string = " // ";
        $separator = $variations_count < $loop_count ? $separator_string : '';

        echo $term_name . ' = ' . $stock_qty . $separator;
    }

}

这将完全输出类似 (颜色名称 "="库存数量 + 分隔符):

蓝色 = 3 // 红色 = 4

在 WooCommerce 3+ 中经过测试并完美运行

【讨论】:

  • 谢谢!但是我有一个问题!在其他产品中我收到此错误:致命错误:调用未定义的方法 WC_Product_Simple::get_available_variations()
  • @AlirezaDarvishi 更新了我的答案:您只需要使用if ($product-&gt;is_type( 'variable' )){ // the code }进行过滤
  • 嗨!我不能显示蓝色和红色。 woocommerce 需要任何选项或 slug?
  • @AlirezaDarvishi 我已经回答了你的另一个问题。请看一下。对于您的表格输出,我有正确的代码。
  • 这段代码应该放在哪里才能工作?哪个模板文件?
【解决方案2】:

 global $woocommerce, $product, $post;
// test if product is variable
if ($product->is_type( 'variable' )) 
{
    $available_variations = $product->get_available_variations();
    foreach ($available_variations as $key => $variation) 
    { 
$variation_id = $variation['variation_id'];
         $variation_obj = new WC_Product_variation($variation_id);
         $stock = $variation_obj->get_stock_quantity();
    }
}

【讨论】:

    【解决方案3】:

    您可以使用get_post_meta() 函数从数据库中获取值。

    产品库存数量值存储在wp_postmeta表中。

    $stock = get_post_meta( $post->ID, '_stock', true );
    

    【讨论】:

      猜你喜欢
      • 2018-07-20
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 2020-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多