【发布时间】:2020-05-22 20:47:13
【问题描述】:
- 我正在尝试以编程方式每 6 小时更新一次所有订单状态。
- “完成”后有 3 种自定义状态,每 6 小时按顺序更新一次。
- 我创建了一个 cron,每 6 小时运行一次,调用函数“auto_update_orders”。
这样做更好还是直接 SQL 查询更好?如果通过 SQL 查询完成,是否还会发送自定义状态的自动电子邮件?
function auto_update_orders() {
$args = array(
'post_type' => 'shop_order',
'posts_per_page' => -1,
'post_status' => 'complete',
);
$orderList = get_posts($args);
foreach ($orderList as $orderPost) {
$order = new WC_Order($orderPost->ID);
if ( $order->has_status( 'completed' ) ) {
$order->update_status( 'inprogress2' );
}
elseif ( $order->has_status( 'inprogress2' ) ) {
$order->update_status( 'inprogress3' );
}
elseif ( $order->has_status( 'inprogress3' ) ) {
$order->update_status( 'ready' );
}
else {
return;
}
}
【问题讨论】:
-
使用
WC_Order对象是最好的方法,而不是直接运行SQL查询。WC_Orderupdate_status调用许多其他函数 -
谢谢...上面的代码正确吗?
-
是的,没错。
-
添加并执行但没有。
-
使用
wc_get_orders代替get_posts
标签: php mysql wordpress woocommerce