问题描述
除付款方式BACS(直接银行转帐)外,我想将每个新订单的woocommerce订单状态自动从“保留”更改为“正在处理”。我已经找到了此代码,但是不知道如何修改它以排除使用BACS进行的付款。
add_action( 'woocommerce_thankyou','woocommerce_auto_processing_orders');
function woocommerce_auto_processing_orders( $order_id ) {
if ( ! $order_id )
return;
$order = wc_get_order( $order_id );
// If order is "on-hold" update status to "processing"
if( $order->has_status( 'on-hold' ) ) {
$order->update_status( 'processing' );
}
}
谢谢您的帮助!
解决方法
基于WooCommerce: Auto complete paid orders答案线程与您的评论相关的更新。
尝试以下操作:
add_action( 'woocommerce_payment_complete_order_status','wc_auto_complete_paid_order',10,3 );
function wc_auto_complete_paid_order( $status,$order_id,$order ) {
return 'processing';
}
应该可以。
原始答案(基于问题代码):
您可以按以下方式使用WC_Order
get_payment_method()
方法:
add_action( 'woocommerce_thankyou','woocommerce_auto_processing_orders');
function woocommerce_auto_processing_orders( $order_id ) {
if ( ! $order_id )
return;
$order = wc_get_order( $order_id );
// If order is "on-hold" update status to "processing" except for "BACS" payments
if( $order->has_status( 'on-hold' ) && $order->get_payment_method() !== 'bacs' ) {
$order->update_status( 'processing' );
}
}
应该可以。