如果WooCommerce中的一种变体缺货,请将所有变体设置为缺货 可以在父变量产品上管理库存

问题描述

我们使用WooCommerce运行自存储系统,并使用WooCommerce订阅插件。我们的存储单元是具有可变订阅的独特产品。每个版本都有不同的计费周期(1个月,3个月,6个月和12个月)。如果一个变体缺货,我需要整个母产品,或者至少所有变体都缺货。

我没有找到任何相关设置,也没有找到使之成为可能的方法。

感谢您的帮助。

解决方法

当一种变型产品缺货时,以下将使所有变型产品缺货(对于特定的可变产品) (也适用于WooCommerce订阅)

add_filter('woocommerce_available_variation','set_all_variations_out_of_stock',10,3 );
function set_all_variations_out_of_stock( $data,$product,$variation ) {
    // Set the Id(s) of the related variable product(s) below in the array
    if( in_array( $product->get_id(),array(738) ) ){
        $out_of_stock = false; // initializing
        
        // Loop through children variations of the parent variable product
        foreach( $product->get_visible_children() as $_variation_id ) {
            if( $_variation_id != $data['variation_id'] ) {
                $_variation = wc_get_product($_variation_id);
                
                
                if( ! $_variation->is_in_stock() ) {
                    $out_of_stock = true; // Flag as out of stock
                    break;
                }
            }
        }
        if ( $out_of_stock ) {
            $data['availability_html'] = '<p class="stock out-of-stock">'. __('Out of stock','woocommerce') .'</p>';
            $data['is_in_stock'] = false;
        }
    }
    return $data;
}

代码进入您的活动子主题(活动主题)的function.php文件中。经过测试,可以正常工作。


重要说明:

可以在父变量产品上管理库存。

  1. 启用可变产品的库存管理(在“库存”选项卡上)并在那里设置库存。
  2. 禁用此可变产品的每个变体的库存管理。

您完成了。现在对变量进行库存管理 产品。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...