首页 > 解决方案 > 通过自定义元键查询日期范围内的 WooCommerce 订单

问题描述

我有一个 meta_key delivered_date,日期格式为 example 2021-05-13 16:01:26

如果我必须使用wc_get_orders( $args ),我怎样才能获得一个日期范围内的所有订单?

尝试使用 meta_compare 参数,但它什么也不返回:

// The 2 variables below will come from a datepicker widget
$start_date = "2021-05-10 0:00:00";
$end_date = "2021-05-30 11:59:59";

$args = array(
        'type'         => 'shop_order',
        'limit'        => 100,
        'paginate'     => true,
        'page'         => 1,
        'orderby'      => 'id',
        'order'        => 'DESC',
        'meta_key'     => 'delivered_date',
        'meta_value'   => array($start_date, $end_date),
        'meta_compare' => 'BETWEEN',
    );

$result = wc_get_orders( $args );

标签: wordpressdatewoocommercemetadataorders

解决方案


You are close, use date — 格式化本地时间/日期

所以你得到:

// The 2 variables below will come from a datepicker widget
$start_date = date( '2021-05-10 00:00:00' );
$end_date = date( '2021-05-30 11:59:59' );

$args = array(
    'orderby'      => 'id',
    'order'        => 'DESC',
    'meta_key'     => 'delivered_date',
    'meta_value'   => array( $start_date, $end_date ),
    'meta_compare' => 'BETWEEN',
);

$orders = wc_get_orders( $args );

// NOT empty
if ( ! empty ( $orders ) ) {        
    foreach ( $orders as $order ) {         
        echo '<p>ID = ' . $order->get_id() . '</p>';
    }
}

结果:ID = 2525,ID = 2524,ID = 2523

在此处输入图像描述


推荐阅读