除BACS付款外,如何自动处理WooCommerce订单?

问题描述

除付款方式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' );
    }
}

应该可以。

相关:WooCommerce: Auto complete paid orders

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...