Woocommerce中订单的自动更改状态

时间:2019-07-01 13:16:54

标签: wordpress woocommerce

我正在寻找一种将订单状态从“已发货”(我正在使用的自定义状态)自动更改为“已完成”的方法,但需要10天。能做到吗

1 个答案:

答案 0 :(得分:1)

您必须:

  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. 浏览查询结果并将它们全部设置为“ completed”。

    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' );