php订单状态代码处理,php – WooCommerce改变订单状态BACS处理

在WooCommerce中,任何与BACS(直接银行转账)一起下的订单都设置为“暂停”.

如何自动将其更改为处理?

我不想在functions.php里面工作

我有以下代码,但这不起作用:

add_filter( 'woocommerce_payment_complete_order_status', 'rfvc_update_order_status', 10, 2 );

function rfvc_update_order_status( $order_status, $order_id ) {

$order = new WC_Order( $order_id );

if ( 'on-hold' == $order_status && 'on-hold' == $order->status ) {

return 'processing';

}

return $order_status;

}

任何帮助都会很棒!

解决方法:

Update (added a version for woocommerce 3+ at the end)

似乎woocommerce_payment_complete_order_status动作挂钩不会触发BACS支付方式.

基于this thread,’woocommerce_thankyou’动作挂钩完成工作:

add_action( 'woocommerce_thankyou', 'bacs_order_payment_processing_order_status', 10, 1 );

function bacs_order_payment_processing_order_status( $order_id ) {

if ( ! $order_id ) {

return;

}

// Get an instance of the WC_Order object

$order = new WC_Order( $order_id );

if ( ( get_post_meta($order->id, '_payment_method', true) == 'bacs' ) && ('on-hold' == $order->status || 'pending' == $order->status) ) {

$order->update_status('processing');

} else {

return;

}

}

代码位于活动子主题(或活动主题)的function.php文件中.测试和工作.

对于woocommerce 3版本:

add_action( 'woocommerce_thankyou_bacs', 'bacs_order_payment_processing_order_status', 10, 1 );

function bacs_order_payment_processing_order_status( $order_id ) {

if ( ! $order_id ) {

return;

}

// Get an instance of the WC_Order object

$order = wc_get_order( $order_id );

if ( in_array( $order->get_status(), array('on-hold', 'pending') ) ) {

$order->update_status('processing');

} else {

return;

}

}

代码位于活动子主题(或活动主题)的function.php文件中.测试和工作.

标签:orders,php,wordpress,woocommerce,payment-method

来源: https://codeday.me/bug/20190724/1525381.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值