我正在寻找一种将订单状态从“已发货”(我正在使用的自定义状态)自动更改为“已完成”的方法,但需要10天。能做到吗
答案 0 :(得分: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-取决于您的需求。
浏览查询结果并将它们全部设置为“ completed”。
foreach ($orders as $order){
$order->update_status( 'completed' );
}
每天使用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' );