【问题标题】:How to automatically change woocommerce processing status to completed如何自动将 woocommerce 处理状态更改为已完成
【发布时间】:2020-02-19 21:23:15
【问题描述】:

如何将woocommerce 订单状态从处理中更改为已完成 ?

我找到了sn-p,但是如果你去感谢页面,它只会改变状态,但是如果我的客户决定关闭paypal页面而不去感谢页面?

然后它仍在处理中,已经测试过了。我需要自动检测处理状态并将其更改为处理。

【问题讨论】:

  • 你能缩小你的问题范围吗?范围太广了。

标签: php wordpress woocommerce status


【解决方案1】:

这将检查订单何时更改状态。如果状态更改为处理中,则将状态设置为已完成。请注意,它确实会经过处理,因此用户可能会背靠背收到两封电子邮件。您可以在 WC 设置仪表板中禁用其中一封电子邮件。

function wc_status_change($order_id,$old_status,$new_status) {
   $order = new WC_Order( $order_id );
   if($order->status == 'processing'){
       $order->update_status('completed');
   }
}

【讨论】:

    【解决方案2】:

    在您的情况下,您有两个选项,第一个可能无法使用,因为它与之前版本的 woocommerce 有关,但第二个应该可以使用

    将代码添加到您的functions.php

    add_filter( 'woocommerce_payment_complete_order_status', 'update_order_status_woo', 10, 2 );
    function update_order_status_woo( $order_status, $order_id ) {
    
        $order = new WC_Order( $order_id );
        if ( $order_status == 'processing' && ( 'on-hold' == $order->status || 'pending' == $order->status || 'failed' == $order->status ) ) {
            return 'completed';
        }
        return $order_status;
    }
    

    add_action('woocommerce_order_status_changed', 'auto_update_processing_to_complete');
    
    function auto_update_processing_to_complete($order_id)
    {
        if ( ! $order_id ) {
            return;
        }
    
        $order = wc_get_order( $order_id );
        if ($order->data['status'] == 'processing') {
            $order->update_status( 'completed' );
        }   
    }
    

    【讨论】:

      猜你喜欢
      • 2022-10-14
      • 2019-06-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-11
      • 2018-08-01
      • 2023-01-28
      • 2018-02-27
      • 2017-04-23
      相关资源
      最近更新 更多