首页 > 解决方案 > Woocommerce中订单的自动更改状态

问题描述

我正在寻找一种将订单状态从已发货(我正在使用的自定义状态)自动更改为已完成但 10 天后的方法。可以做到吗?

标签: wordpresswoocommerce

解决方案


你必须:

  1. 获取状态为“已发货”且在过去 10 天之前创建的所有订单。您可以使用 wc_get_orders 函数 ( https://github.com/woocommerce/woocommerce/wiki/wc_get_orders-and-WC_Order_Query ) 来查询订单。

    $orders = wc_get_orders( array(
            'status' => 'shipped',
            'date_created' => '<' . ( time() - 10 * DAY_IN_SECONDS ),
    

    )); 您可以使用 date_paid 而不是 date_created - 取决于您的需要。

  2. 遍历查询结果并将它们全部设置为“已完成”。

    foreach ($orders as $order){
        $order->update_status( 'completed' );
    }
    
  3. 使用 wp_schedule_event 函数 wp_schedule_event( time(), 'daily', 'function_name' ) 每天安排此函数的运行;

放在一起,你应该有这个:

function setCompletedAfter10Days(){
        $orders = wc_get_orders( array(
                'status' => 'shipped',
                'date_created' => '<' . ( time() - 10 * DAY_IN_SECONDS ),

        ) );

        foreach ($orders as $order){
            $order->update_status( 'completed' );
        }
}

wp_schedule_event( time(), 'daily', 'setCompletedAfter10Days' );

推荐阅读