1

我想将每个新订单的 woocommerce 订单状态从“暂停”自动更改为“正在处理”,付款方式 BACS(直接银行转账)除外。我已经找到了此代码,但不知道如何调整它以排除使用 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' );
    }
}

谢谢您的帮助!

4

1 回答 1

1

基于WooCommerce 的与您的评论相关的更新:自动完成付费订单回答线程。

尝试以下操作:

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:自动完成已付款订单

于 2020-09-13T11:51:26.610 回答