Automattic\WooCommerce\Blocks\BlockTypes\ProductCollection
QueryBuilder::get_final_query_args
Get final query args based on provided values
Method of the class: QueryBuilder{}
No Hooks.
Returns
null. Nothing (null).
Usage
$QueryBuilder = new QueryBuilder(); $QueryBuilder->get_final_query_args( $collection_args, $common_query_values, $query, $is_exclude_applied_filters );
- $collection_args(array) (required)
- Any special arguments that should change the behavior of the query.
- $common_query_values(array) (required)
- Common query values.
- $query(array) (required)
- Query from block context.
- $is_exclude_applied_filters(true|false)
- Whether to exclude the applied filters or not.
Default: false
QueryBuilder::get_final_query_args() QueryBuilder::get final query args code WC 10.3.5
public function get_final_query_args(
$collection_args,
$common_query_values,
$query,
$is_exclude_applied_filters = false
) {
$orderby_query = $query['orderby'] ? $this->get_custom_orderby_query( $query['orderby'] ) : array();
$on_sale_query = $this->get_on_sale_products_query( $query['on_sale'] );
$stock_query = $this->get_stock_status_query( $query['stock_status'] );
$visibility_query = is_array( $query['stock_status'] ) ? $this->get_product_visibility_query( $stock_query, $query['stock_status'] ) : array();
$featured_query = $this->get_featured_query( $query['featured'] ?? false );
$attributes_query = $this->get_product_attributes_query( $query['product_attributes'] );
$taxonomies_query = $query['taxonomies_query'] ?? array();
$tax_query = $this->merge_tax_queries( $visibility_query, $attributes_query, $taxonomies_query, $featured_query );
$date_query = $this->get_date_query( $query['timeFrame'] ?? array() );
$price_query_args = $this->get_price_range_query_args( $query['priceRange'] ?? array() );
$handpicked_query = $this->get_handpicked_query( $query['handpicked_products'] ?? false );
// We exclude applied filters to generate product ids for the filter blocks.
$applied_filters_query = $is_exclude_applied_filters ? array() : $this->get_queries_by_applied_filters();
// Allow collections to provide their own query parameters.
$handlers = $this->collection_handler_store[ $collection_args['name'] ] ?? null;
if ( isset( $handlers['build_query'] ) ) {
$collection_query = call_user_func(
$handlers['build_query'],
$collection_args,
$common_query_values,
$query,
$is_exclude_applied_filters
);
} else {
$collection_query = array();
}
return $this->merge_queries(
$common_query_values,
$orderby_query,
$on_sale_query,
$stock_query,
$tax_query,
$applied_filters_query,
$date_query,
$price_query_args,
$handpicked_query,
$collection_query
);
}