如何自动将woocommerce处理状态更改为已完成

时间:2019-10-23 15:15:04

标签: php wordpress woocommerce status

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

我找到了代码段,但是仅当您转到“谢谢”页面时,它才会更改状态,但是如果我的客户决定仅关闭paypal页面而不转到“谢谢”页面?

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

2 个答案:

答案 0 :(得分:0)

这将检查订单何时更改状态。如果状态变为处理中,它将状态设置为已完成。请注意,它确实经过处理,因此用户可能会收到两封电子邮件。您可以在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');
   }
}

答案 1 :(得分:0)

在您的情况下,您有两个选择,第一个可能不起作用,因为它与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' );
    }   
}