【问题标题】:Woocommerce Gateway default order status customizationWoocommerce Gateway 默认订单状态自定义
【发布时间】:2020-02-01 17:30:38
【问题描述】:

我使用了以下代码,它运行良好,它使所有订单默认状态为暂停。

/**
 * Auto Complete all WooCommerce orders.
 */
add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_order' );
function custom_woocommerce_auto_complete_order( $order_id ) { 
    if ( ! $order_id ) {
        return;
    }

    $order = wc_get_order( $order_id );
    $order->update_status( 'on-hold' );
}

但我需要将此与送货/账单地址结合起来。即在订单的送货地址或账单地址不是英国或法国时执行此代码。来自所有其他国家/地区的客户将根据此代码被搁置,而英国和法国的订单将获得付款 geteway 设置设置的默认订单状态。

任何帮助将不胜感激。

【问题讨论】:

    标签: php wordpress woocommerce hook-woocommerce orders


    【解决方案1】:

    尝试以下方法以排除法国和英国的帐单和送货国家/地区:

    add_action( 'woocommerce_thankyou', 'country_based_auto_on_hold_orders' );
    function country_based_auto_on_hold_orders( $order_id ) { 
        if ( ! $order_id ) {
            return;
        }
    
        $order = wc_get_order( $order_id );
    
        if ( ! ( in_array( $order->get_billing_country(), ['UK', 'FR'] ) || in_array( $order->get_shipping_country(), ['UK', 'FR'] ) ) ) {
            $order->update_status( 'on-hold' );
        }
    }
    

    现在使用woocommerce_thankyou钩子,是老办法。要避免多个电子邮件通知状态更改,请改用以下方法:

    对于所有支付网关,货到付款 (COD) 除外:

    add_action( 'woocommerce_payment_complete_order_status', 'wc_auto_on_old_paid_order', 10, 3 );
    function wc_auto_on_old_paid_order( $status, $order_id, $order ) {
        if ( ! ( in_array( $order->get_billing_country(), ['UK', 'FR'] ) || in_array( $order->get_shipping_country(), ['UK', 'FR'] ) ) ) {
            $status = 'on-hold'
        }
        return $status;
    }
    

    对于货到付款 (COD) 付款:

    add_action( 'woocommerce_cod_process_payment_order_status', 'wc_auto_complete_cod_order', 10, 2 );
    function wc_auto_complete_cod_order( $status, $order ) {
        if ( ! ( in_array( $order->get_billing_country(), ['UK', 'FR'] ) || in_array( $order->get_shipping_country(), ['UK', 'FR'] ) ) ) {
            $status = 'on-hold'
        }
        return $status;
    }
    

    相关:WooCommerce: Auto complete paid orders

    【讨论】:

    • 非常感谢!
    猜你喜欢
    • 2017-04-02
    • 2022-09-30
    • 2019-11-13
    • 2018-12-30
    • 2015-06-29
    • 1970-01-01
    • 2018-08-30
    • 2019-08-27
    • 1970-01-01
    相关资源
    最近更新 更多