【问题标题】:How to auto-process WooCommerce orders except for BACS payments?除 BACS 付款外,如何自动处理 WooCommerce 订单?
【发布时间】:2020-12-31 06:49:54
【问题描述】:

我想自动将每个新订单的 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' );
    }
}

感谢您的帮助!

【问题讨论】:

    标签: php wordpress woocommerce status payment-method


    【解决方案1】:

    根据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

    【讨论】:

    • 非常感谢您的帮助,但不幸的是,它不适用于我通过条带集成的一种付款方式。这是一种在德国称为“Sofortüberweisung”的本地支付方式。此付款方式的订单仍处于“暂停”状态,不会自动更改为处理。任何想法如何解决? :( 我已将代码粘贴到我的functions.php(子主题)中并删除了缓存。
    • 我正在使用这个条纹插件:wordpress.org/plugins/woocommerce-gateway-stripe
    • 谢谢您,非常感谢您的支持!我还应该提到,在客户使用付款方式“Sofortüberweisung”订购后,stripe/woocommerce 收到付款需要几天时间。我尝试了更新的代码,但没有成功。我认为在收到付款后,您更新的代码会将状态更改为正在处理,但之前不会。但在我的情况下,有必要在客户下订单后立即更新状态(尽管还没有收到钱)。
    • 后台是在下单后直接在“处理中”状态下自动生成优惠券,并通过邮件发送给客户。在我收到付款之前,客户不应等待他的优惠券。抱歉,如果此信息与了解相关!
    猜你喜欢
    • 2013-09-06
    • 2016-08-04
    • 2016-06-11
    • 2021-01-07
    • 2015-07-25
    • 2019-01-19
    • 1970-01-01
    • 2011-12-19
    • 2017-03-17
    相关资源
    最近更新 更多