Automattic\WooCommerce\Blocks\BlockTypes\ProductCollection
Controller::build_frontend_query
Return a custom query based on attributes, filters and global WP_Query.
Method of the class: Controller{}
No Hooks.
Returns
Array.
Usage
$Controller = new Controller(); $Controller->build_frontend_query( $query, $block, $page );
- $query(WP_Query) (required)
- The WordPress Query.
- $block(WP_Block) (required)
- The block being rendered.
- $page(int) (required)
- The page number.
Controller::build_frontend_query() Controller::build frontend query code WC 10.6.2
public function build_frontend_query( $query, $block, $page ) {
// If not in context of product collection block, return the query as is.
$is_product_collection_block = $block->context['query']['isProductCollectionBlock'] ?? false;
if ( ! $is_product_collection_block ) {
return $query;
}
$block_context_query = $block->context['query'];
// phpcs:ignore WordPress.DB.SlowDBQuery
$block_context_query['tax_query'] = ! empty( $query['tax_query'] ) ? $query['tax_query'] : array();
$inherit = $block->context['query']['inherit'] ?? false;
$filterable = $block->context['query']['filterable'] ?? false;
$is_exclude_applied_filters = ! ( $inherit || $filterable );
$collection_args = array(
'name' => $block->context['collection'] ?? '',
'productCollectionLocation' => $block->context['productCollectionLocation'] ?? null,
);
// Use QueryBuilder to construct the query.
return $this->query_builder->get_final_frontend_query(
$collection_args,
$block_context_query,
$page,
$is_exclude_applied_filters
);
}