如何使用 WC_Order_Query class 自定义订单状态

How to use WC_Order_Query class with custom order status

我创建了一个新的订单状态:packed。

我想获取订单状态为“已打包”的订单。此订单状态必须至少在 2 天前创建。但是,我的时间有问题。 date_modified 根据当地时间不工作。有没有人遇到过这个问题并有解决办法?

$two_days_ago           = date(strtotime('-2 day'), current_time('timestamp'));
$current_time           = current_time('timestamp');
$args = array(
  'limit'           => -1,
  'return'          => 'ids',
  'date_modified '  => $two_days_ago_tomorrow.'...'.current_time('timestamp'),
  'status'          => 'a-packed'
);
$query = new WC_Order_Query( $args );

wc_get_ordersWC_Order_Query 提供了一种检索订单的标准方法,使用安全,不会因未来 WooCommerce 版本中的数据库更改而中断。您传入定义搜索条件的参数数组。

更多信息:wc_get_orders and WC_Order_Query


由于您在问题中提到 “此订单状态必须至少在 2 天前创建”,在我看来 date_created 的使用是比 date_modified

更合适

所以你得到:

$days_delay = 2; // 48 hours
$one_day    = 24 * 60 * 60;
$today      = strtotime( date('Y-m-d') );

$orders = wc_get_orders( array(
    'status'       => array( 'your-custom-status' ),
    'orderby'      => 'date',
    'order'        => 'ASC',
    'date_created' => '<' . ( $today - ( $days_delay * $one_day ) ),
));

foreach ( $orders as $order ) {
    $order_id = $order->get_id();
    echo '<p>' . $order_id . '</p>';
}