小编Con*_*ell的帖子

仅针对 Woocommerce 中的特定订单状态和付款方式减少库存

我正在为客户开发一些自定义 Woocommerce 功能。他们使用 BACS 支付网关来处理人工支付。

然而,网关目前为我们的需要过早地减少库存,即当订单为“暂停”时。我只想在订单标记为“处理中”或“完成”时减少库存(避免重复减少)。

我已经设法通过以下代码段防止库存在“暂停”期间自行减少:

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 );
Run Code Online (Sandbox Code Playgroud)

我不太确定如何继续。虽然上述代码有效,但添加以下条件无效:

else if ( $order->has_status( 'processing' ) || $order->has_status( 'completed' ) ) {
$reduce_stock = true;
}
Run Code Online (Sandbox Code Playgroud)

简而言之,我希望库存根据以下库存状态发生变化:

  • 暂停 - 什么都不做
  • 已完成或正在处理 - 减少库存(仅一次)
  • 取消 - 增加库存(仅当最初减少时)

任何帮助深表感谢!

php wordpress stock orders woocommerce

4
推荐指数
1
解决办法
4076
查看次数

标签 统计

orders ×1

php ×1

stock ×1

woocommerce ×1

wordpress ×1