“暂停”、“处理中”和“已完成”订单状态的库存已经减少,如您所见@ 987654321@,将函数挂钩到以下挂钩:
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 文件中。它应该可以工作。