如何解决如何减少 WooCommerce 中特定订单状态的库存
我在 WooCommerce 上管理我的库存。
当订单状态更改为特定状态(例如(待处理)或其他状态)时,我想减少库存。
所以我使用了这个代码:
function manageStock ($order_id,$old_status,$new_status,$instance ) {
if ($old_status === 'on-hold'){
wc_reduce_stock_levels($order_id);
}
}
add_action( 'woocommerce_order_status_changed','manageStock',10,4 );
但不幸的是不起作用。有没有其他方法可以解决这个问题?
解决方法
“待定”、“处理中” 和“已完成” 订单状态的库存已经减少,如您所见{ {3}},将函数挂钩到以下挂钩:
add_action( 'woocommerce_payment_complete','wc_maybe_reduce_stock_levels' );
add_action( 'woocommerce_order_status_completed','wc_maybe_reduce_stock_levels' );
add_action( 'woocommerce_order_status_processing','wc_maybe_reduce_stock_levels' );
add_action( 'woocommerce_order_status_on-hold','wc_maybe_reduce_stock_levels' );
所以不要直接使用wc_reduce_stock_levels()
,而是用wc_maybe_reduce_stock_levels()
代替。
但是在 WooCommerce 待处理 订单状态下,函数wc_maybe_increase_stock_levels()
被触发增加库存水平,因此我们需要先删除该行为。
现在允许减少“待处理”订单状态的库存,添加以下代码行:
add_action('init',function() {
remove_action( 'woocommerce_order_status_pending','wc_maybe_increase_stock_levels' );
add_action( 'woocommerce_order_status_pending','wc_maybe_reduce_stock_levels' );
});
代码位于活动子主题(或活动主题)的functions.php 文件中。它应该可以工作。
请注意,woocommerce_order_status_{$status_transition_to}
是一个复合挂钩,可用于任何其他自定义订单状态。
因此对于任何自定义订单状态(例如“已发货”),我们将使用:
add_action( 'woocommerce_order_status_shipped','wc_maybe_reduce_stock_levels' );
代码位于活动子主题(或活动主题)的functions.php 文件中。它应该可以工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。