Woocommerce:查询与元数据值匹配的所有订单

Woocommerce: Query all orders that match a meta data value

我正在尝试获取在自定义元数据中具有特定值的所有订单。

这是使用 wc_get_orders

的基本查询
$delivered_orders = (array) wc_get_orders( array(
        'limit'        => -1,
        'status'       => 'wc-delivered',
        'type' => 'shop_order',
        'date_created' => '>'. $from,
    ) );

我在这里获取所有状态为 wc-delivered 并且是从特定日期创建的订单,我还需要过滤那些其元数据 _my_meta_data 等于 "some value"

您可以将自定义参数添加到查询变量中,如下所示:

1.过滤生成的查询。

/**
 * Handle a custom 'customvar' query var to get orders with the 'customvar' meta.
 * @param array $query - Args for WP_Query.
 * @param array $query_vars - Query vars from WC_Order_Query.
 * @return array modified $query
 */
function handle_custom_query_var( $query, $query_vars ) {
    if ( ! empty( $query_vars['customvar'] ) ) {
        $query['meta_query'][] = array(
            'key' => 'customvar',
            'value' => esc_attr( $query_vars['customvar'] ),
        );
    }

    return $query;
}
add_filter( 'woocommerce_order_data_store_cpt_get_orders_query', 'handle_custom_query_var', 10, 2 );

2。用法

$orders = wc_get_orders( array( 'customvar' => 'somevalue' ) );
/**
* you can try this below code 
*/
    
$args = array(
    'status' => array('wc-delivered'),
);
$orders = wc_get_orders( $args );