WC_Order_Data_Store_CPT::query
Query for Orders matching specific criteria.
Method of the class: WC_Order_Data_Store_CPT{}
Hooks from the method
Returns
Array|Object.
Usage
$WC_Order_Data_Store_CPT = new WC_Order_Data_Store_CPT(); $WC_Order_Data_Store_CPT->query( $query_vars );
- $query_vars(array) (required)
- query vars from a WC_Order_Query.
Changelog
| Since 3.1.0 | Introduced. |
WC_Order_Data_Store_CPT::query() WC Order Data Store CPT::query code WC 10.7.0
public function query( $query_vars ) {
/**
* Allows 3rd parties to filter query args that will trigger an unsupported notice.
*
* @since 9.2.0
*
* @param array $unsupported_args Array of query arg names.
*/
$unsupported_args = (array) apply_filters(
'woocommerce_order_data_store_cpt_query_unsupported_args',
array( 'meta_query', 'field_query' )
);
// Trigger doing_it_wrong() for query vars only supported in HPOS.
$unsupported_args_in_query = array_keys( array_filter( array_intersect_key( $query_vars, array_flip( $unsupported_args ) ) ) );
if ( $unsupported_args_in_query && __CLASS__ === get_class( $this ) ) {
wc_doing_it_wrong(
__METHOD__,
esc_html(
sprintf(
// translators: %s is a comma separated list of query arguments.
_n(
'Order query argument (%s) is not supported on the current order datastore.',
'Order query arguments (%s) are not supported on the current order datastore.',
count( $unsupported_args_in_query ),
'woocommerce'
),
implode( ', ', $unsupported_args_in_query )
)
),
'9.2.0'
);
}
$args = $this->get_wp_query_args( $query_vars );
if ( ! empty( $args['errors'] ) ) {
$query = (object) array(
'posts' => array(),
'found_posts' => 0,
'max_num_pages' => 0,
);
} else {
$query = new WP_Query( $args );
}
if ( isset( $query_vars['return'] ) && 'ids' === $query_vars['return'] ) {
$orders = $query->posts;
} else {
update_post_caches( $query->posts ); // We already fetching posts, might as well hydrate some caches.
$order_ids = wp_list_pluck( $query->posts, 'ID' );
$orders = $this->compile_orders( $order_ids, $query_vars, $query );
}
if ( isset( $query_vars['paginate'] ) && $query_vars['paginate'] ) {
return (object) array(
'orders' => $orders,
'total' => $query->found_posts,
'max_num_pages' => $query->max_num_pages,
);
}
return $orders;
}