【发布时间】:2023-03-09 23:13:02
【问题描述】:
我正在为客户开发一些自定义 Woocommerce 功能。他们使用 BACS 支付网关来处理人工支付。
但是,网关目前太早地减少库存以满足我们的需要,即当订单处于“暂停”状态时。我只想在订单标记为“处理中”或“完成”时减少库存(避免重复减少)。
我已经设法通过以下 sn-p 防止库存在“搁置”时自行减少:
function wcs_do_not_reduce_onhold_stock( $reduce_stock, $order ) {
if ( $order->has_status( 'on-hold' ) ) {
$reduce_stock = false;
}
return $reduce_stock;
}
add_filter( 'woocommerce_can_reduce_order_stock', 'wcs_do_not_reduce_onhold_stock', 10, 2 );
我不太确定如何进行。虽然上面的代码有效,但添加以下条件不起作用:
else if ( $order->has_status( 'processing' ) || $order->has_status( 'completed' ) ) {
$reduce_stock = true;
}
简而言之,我希望根据以下库存状态更改库存:
- 暂停 - 什么都不做
- 已完成或正在处理 - 减少库存(仅一次)
- 已取消 - 增加库存(仅在最初减少时)
非常感谢任何帮助!
【问题讨论】:
标签: php wordpress woocommerce stock orders