wordpress - Woocommerce中订单的自动更改状态
问题描述
我正在寻找一种将订单状态从已发货(我正在使用的自定义状态)自动更改为已完成但 10 天后的方法。可以做到吗?
解决方案
你必须:
获取状态为“已发货”且在过去 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 - 取决于您的需要。
遍历查询结果并将它们全部设置为“已完成”。
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' );
推荐阅读
- javascript - 万事达卡付款集成完成付款后如何重定向到链接
- javascript - Javascript - 更新包含给定文本的类名
- javascript - Highcharts stock-tools Clicks 导致 ASP.NET 回发?
- asp.net-mvc - 未捕获的类型错误:c(...).tScrollable 不是函数
- python - 分类编码后处理不平衡数据
- java - 使用 Apache Camel 进行 PGP 加密
- dynamics-crm-2011 - 为什么每次创建新记录时,我发现 ID 增加 2 不是正常方式?
- python - 替换字典列表中字典的特定项目?
- spring-boot - 有没有办法用假装弹簧客户端只记录身体?
- rest - 通过角度6访问rest-api时出现CORS错误