You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用WooCommerce的wc_get_orders函数无法获取指定日期完成的全部订单ID的问题

解决WooCommerce wc_get_orders无法获取指定日期已完成订单的问题

我帮你分析下问题所在,你的代码里有两个关键细节没处理对,导致拿不到预期的5个订单:

  1. 订单状态参数格式错误:WooCommerce的订单状态用的是小写的slug标识符,不是显示名称里的首字母大写格式。你写的"Completed"应该改成'completed'。
  2. 日期匹配逻辑不完整:如果直接给date_completed传单个日期字符串,它只会匹配完成时间精确等于2022-04-19 00:00:00的订单,但实际订单的完成时间肯定是当天的某个具体时分秒,所以必须指定一个覆盖全天的日期范围。

修正后的代码

$args = array( 
    'status' => 'completed', // 改为小写的状态slug
    'return' => 'ids', 
    'date_completed' => array(
        'after'  => '2022-04-18 23:59:59', // 覆盖前一天最后一秒到当天结束
        'before' => '2022-04-20 00:00:00',
    ),
); 
$orders = wc_get_orders( $args ); 
print_r($orders);

额外优化方案

如果不想手动写固定的前后日期,可以用PHP日期函数动态生成,适配任意目标日期:

$target_date = '2022-04-19';
$args = array( 
    'status' => 'completed',
    'return' => 'ids', 
    'date_completed' => array(
        'after'  => date('Y-m-d H:i:s', strtotime($target_date . ' -1 second')),
        'before' => date('Y-m-d H:i:s', strtotime($target_date . ' +1 day')),
    ),
); 

另外也可以确认下,这些订单确实是系统默认的completed状态,不是你自定义的类似状态(如果有的话),避免状态slug不匹配的问题。

内容的提问来源于stack exchange,提问作者Amal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 18:47:49