Automattic\WooCommerce\Internal\DataStores\Orders
OrdersTableDataStore::query
Performs actual query to get orders. Uses OrdersTableQuery to build and generate the query.
Method of the class: OrdersTableDataStore{}
Hooks from the method
Returns
Array|Object. List of orders and count of orders.
Usage
$OrdersTableDataStore = new OrdersTableDataStore(); $OrdersTableDataStore->query( $query_vars );
- $query_vars(array) (required)
- Query variables.
OrdersTableDataStore::query() OrdersTableDataStore::query code WC 10.7.0
public function query( $query_vars ) {
if ( ! isset( $query_vars['paginate'] ) || ! $query_vars['paginate'] ) {
$query_vars['no_found_rows'] = true;
}
if ( isset( $query_vars['anonymized'] ) ) {
$query_vars['meta_query'] = $query_vars['meta_query'] ?? array(); // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
if ( $query_vars['anonymized'] ) {
$query_vars['meta_query'][] = array(
'key' => '_anonymized',
'value' => 'yes',
);
} else {
$query_vars['meta_query'][] = array(
'key' => '_anonymized',
'compare' => 'NOT EXISTS',
);
}
}
// Handle fulfillment status filtering.
if ( ! empty( $query_vars['fulfillment_status'] ) ) {
$query_vars['meta_query'][] = FulfillmentUtils::get_order_fulfillment_status_meta_query( $query_vars['fulfillment_status'] );
}
/**
* Filter the query args before executing the query.
*
* @param array $query_vars The query vars.
* @return array
* @since 10.4.0
*/
$query_vars = apply_filters( 'woocommerce_orders_table_datastore_get_orders_query', $query_vars, $this );
try {
$query = new OrdersTableQuery( $query_vars );
} catch ( \Exception $e ) {
$query = (object) array(
'orders' => array(),
'found_orders' => 0,
'max_num_pages' => 0,
);
}
if ( isset( $query_vars['return'] ) && 'ids' === $query_vars['return'] ) {
$orders = $query->orders;
} else {
$orders = WC()->order_factory->get_orders( $query->orders );
$this->prime_caches_for_orders( $query->orders, $query_vars );
}
if ( isset( $query_vars['paginate'] ) && $query_vars['paginate'] ) {
return (object) array(
'orders' => $orders,
'total' => $query->found_orders,
'max_num_pages' => $query->max_num_pages,
);
}
return $orders;
}