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 );
我正在尝试获取在自定义元数据中具有特定值的所有订单。
这是使用 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 );