考虑以下示例:
我有一个名为“ A”的产品,我的商店中有10个产品。
用户订购并付款3。订购状态将变为“正在处理”,库存减少。
现在,我将订单状态手动更改为“待处理”。库存增加到10。
我想防止这种情况的发生。
这是我正在使用的代码,但似乎不起作用:
function wcs_do_not_reduce_onhold_stock( $reduce_stock, $order ) {
if ( $order->has_status( 'pending' ) ) {
$reduce_stock = false;
}
return $reduce_stock;
}
add_filter( 'woocommerce_can_reduce_order_stock', 'wcs_do_not_reduce_onhold_stock', 10, 2 );
答案 0 :(得分:0)
您的代码不起作用的原因是WooCommerce实际上具有减少库存和增加库存的不同功能-wc_reduce_stock_levels()和wc_increase_stock_levels()。过滤器“ woocommerce_can_reduce_order_stock”位于函数wc_reduce_stock_levels()中。在函数wc_increase_stock_levels()中有一个对应的过滤器“ woocommerce_can_restore_order_stock”。尝试改用此过滤器。