在WooCommerce中,任何通过BACS(直接银行转账)下的订单都设置为 "on-hold"
。
如何将其自动更改为处理?
我不想在内使用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;
}
任何帮助将是巨大的!
最佳答案
2020年新更新
WooCommerce 3.4版引入了比woocommerce_thankyou
或woocommerce_thankyou_bacs
更好的钩子(Hook),该钩子(Hook)可以更改BACS付款方式的默认订单状态。
使用此钩子(Hook)将:
因此,请改用以下内容:
add_filter( 'woocommerce_bacs_process_payment_order_status','filter_bacs_process_payment_order_status_callback', 10, 2 );
function filter_bacs_process_payment_order_status_callback( $status, $order ) {
return 'processing';
}
代码进入事件子主题(或事件主题)的functions.php文件中。经过测试和工作。原始答案:
似乎
woocommerce_payment_complete_order_status
操作 Hook 不会通过BACS付款方式触发。基于this thread,
'woocommerce_thankyou'
Action 钩子(Hook)完成了这项工作: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及更高版本:
在这里,我们使用类似的复合钩子(Hook)
woocommerce_thankyou_{$order->get_payment_method()}
: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文件中。测试和工作。关于php - WooCommerce更改订单状态BACS处理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36597663/