如果 WooCommerce 中的一种变体缺货,则将所有变体设置为缺货

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

我没有找到任何相关的设置,也没有找到如何实现这一点。

任何帮助表示赞赏。


POPMUISE
浏览 73回答 1
1回答

慕工程0101907

当一种变体缺货时,以下操作将使所有变体缺货(对于特定可变产品)(也适用于 WooCommerce 订阅):add_filter('woocommerce_available_variation', 'set_all_variations_out_of_stock', 10, 3 );function set_all_variations_out_of_stock( $data, $product, $variation ) {&nbsp; &nbsp; // Set the Id(s) of the related variable product(s) below in the array&nbsp; &nbsp; if( in_array( $product->get_id(), array(738) ) ){&nbsp; &nbsp; &nbsp; &nbsp; $out_of_stock = false; // initializing&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; // Loop through children variations of the parent variable product&nbsp; &nbsp; &nbsp; &nbsp; foreach( $product->get_visible_children() as $_variation_id ) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if( $_variation_id != $data['variation_id'] ) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $_variation = wc_get_product($_variation_id);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if( ! $_variation->is_in_stock() ) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $out_of_stock = true; // Flag as out of stock&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; if ( $out_of_stock ) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $data['availability_html'] = '<p class="stock out-of-stock">'. __('Out of stock', 'woocommerce') .'</p>';&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $data['is_in_stock'] = false;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; return $data;}代码位于活动子主题(活动主题)的 function.php 文件中。经过测试并有效。重要的提示:可以在父变量产品上管理库存。对可变产品启用库存管理(在“库存”选项卡上)并在那里设置库存。禁用此可变产品的每个变体的库存管理。你完成了。库存管理现在针对可变产品进行处理。
打开App,查看更多内容
随时随地看视频慕课网APP