Query
Class Query
Handles query-related operations to filter products and return the results.
Tags
Table of Contents
- $filters : array<string|int, Filter>
- Filters associated with this query.
- $found_product_ids : array<string|int, mixed>
- The found product IDs for the query.
- $integrations : array<string|int, mixed>
- Integrations (shortcode attributes) for customizing the query.
- $is_preflight : bool
- Whether this query is a preflight request.
- $is_reset_request : bool
- Whether this query is a reset request.
- $no_results : bool
- Whether the query has no results.
- $order_by : string|null
- The order by for the query.
- $paged : int
- The current page number.
- $parameters : array<string|int, mixed>
- The parameters for the filters.
- $possible_choices : array<string|int, mixed>
- The possible choices for the filters.
- $query_args : array<string|int, mixed>
- Additional WP_Query arguments for constraining the base product query.
- __construct() : mixed
- Query constructor.
- from_parameters() : Query
- Create a Query instance from parameters.
- get_filters() : array<string|int, Filter>
- Get the filters associated with this query.
- get_filters_with_search_query() : array<string|int, Filter>
- Get the filters with a search query.
- get_integration() : mixed
- Get a specific integration value.
- get_integrations() : array<string|int, mixed>
- Get the integrations.
- get_order_by() : string|null
- Get the order by for the query.
- get_paged() : int
- Get the current page number.
- get_parameters() : array<string|int, mixed>|null
- Get the parameters for the filters.
- get_possible_choices() : array<string, array<string, string|string[]>>
- Get the possible choices for the filters.
- get_product_ids() : array<string|int, mixed>
- Get the found product IDs.
- get_queriable_filters() : array<string|int, Filter>
- Get the queriable filters that have a search query.
- get_query_args() : array<string|int, mixed>
- Get the query arguments.
- get_results() : array<string|int, mixed>
- Get the results for the query.
- has_no_results() : bool
- Check if the query has no results.
- has_search_filter() : bool
- Check if the query has a search filter.
- is_preflight() : bool
- Check if this query is a preflight request.
- is_reset_request() : bool
- Check if this query is a reset request.
- maybe_insert_search_query() : void
- Maybe insert the search query into the WP_Query.
- prepare_results() : void
- Prepare the results for the query.
- set_filters() : $this
- Set the filters associated with this query.
- set_integrations() : $this
- Set the integrations.
- set_is_preflight() : $this
- Set whether this query is a preflight request.
- set_is_reset_request() : $this
- Set whether this query is a reset request.
- set_no_results() : self
- Set whether the query has no results.
- set_order_by() : $this
- Set the order by for the query.
- set_paged() : self
- Set the current page number.
- set_parameters() : $this
- Set the parameters for the filters.
- set_parameters_to_filters() : $this
- Set the parameters to the filters.
- set_possible_choices() : $this
- Set the possible choices for the filters.
- set_query_args() : $this
- Set the query arguments.
- apply_query_args() : void
- Apply query arguments to constrain the base WP_Query.
- apply_sorting_to_product_ids() : void
- Apply sorting to the found product IDs based on the order_by parameter.
- collect_possible_choices() : void
- Collect the possible choices for the filters.
- get_active_filters_list() : array<string|int, mixed>
- Get the active filters list.
- get_all_products() : array<string|int, mixed>
- Get all products that could potentially be shown using WooCommerce's query logic.
- get_matching_posts() : array<string|int, mixed>
- Get the posts that match the filters.
- get_post_ids_from_query_args() : array<string|int, mixed>
- Get post IDs from query args constraints.
- get_posts_per_page() : int
- Get the number of posts per page based on integrations.
- get_search_query() : string|null
- Get the search query from the first filter of the type Search.
- has_active_filters() : bool
- Check if there are any active filters in the current query.
- sanitize_integrations() : array<string|int, mixed>
- Sanitize and validate integrations.
- sanitize_query_args() : array<string|int, mixed>
- Sanitize and validate query arguments.
Properties
$filters
Filters associated with this query.
protected
array<string|int, Filter>
$filters
The filters associated with this query.
$found_product_ids
The found product IDs for the query.
protected
array<string|int, mixed>
$found_product_ids
= []
The found product IDs for the query.
$integrations
Integrations (shortcode attributes) for customizing the query.
protected
array<string|int, mixed>
$integrations
= []
Array of integrations/shortcode attributes.
$is_preflight
Whether this query is a preflight request.
protected
bool
$is_preflight
= false
$is_reset_request
Whether this query is a reset request.
protected
bool
$is_reset_request
= false
$no_results
Whether the query has no results.
protected
bool
$no_results
= false
$order_by
The order by for the query.
protected
string|null
$order_by
The order by for the query.
$paged
The current page number.
protected
int
$paged
= 1
$parameters
The parameters for the filters.
protected
array<string|int, mixed>
$parameters
These are the parameters that are sent in the request.
The parameters for the filters.
$possible_choices
The possible choices for the filters.
protected
array<string|int, mixed>
$possible_choices
= []
These are the values that are retrieved from the database.
The possible choices for the filters.
$query_args
Additional WP_Query arguments for constraining the base product query.
protected
array<string|int, mixed>
$query_args
= []
WP_Query arguments to apply to the base query.
Methods
__construct()
Query constructor.
public
__construct(array<string|int, Filter> $filters[, array<string|int, mixed> $parameters = [] ][, string|null $order_by = null ][, bool $is_preflight = false ][, int $paged = 1 ][, array<string|int, mixed> $query_args = [] ][, array<string|int, mixed> $integrations = [] ][, bool $is_reset_request = false ]) : mixed
Parameters
- $filters : array<string|int, Filter>
-
The filters associated with this query.
- $parameters : array<string|int, mixed> = []
-
The parameters for the filters.
- $order_by : string|null = null
-
The order by for the query.
- $is_preflight : bool = false
-
Whether this query is a preflight request.
- $paged : int = 1
-
The current page number.
- $query_args : array<string|int, mixed> = []
-
Additional WP_Query arguments for constraining the base query.
- $integrations : array<string|int, mixed> = []
-
Integrations (shortcode attributes) for customizing the query.
- $is_reset_request : bool = false
-
Whether this query is a reset request.
Return values
mixed —from_parameters()
Create a Query instance from parameters.
public
static from_parameters([array<string|int, mixed> $parameters = [] ][, string|null $order_by = null ][, bool $is_preflight = false ][, int $paged = 1 ][, array<string|int, mixed> $query_args = [] ][, array<string|int, mixed> $integrations = [] ][, bool $is_reset_request = false ]) : Query
This static method takes an array of parameters and creates Filter instances based on the parameter keys (slugs), then creates and returns a Query instance.
Parameters
- $parameters : array<string|int, mixed> = []
-
The parameters for the filters (slug => value pairs).
- $order_by : string|null = null
-
The order by for the query.
- $is_preflight : bool = false
-
Whether this query is a preflight request.
- $paged : int = 1
-
The current page number.
- $query_args : array<string|int, mixed> = []
-
Additional WP_Query arguments for constraining the base query.
- $integrations : array<string|int, mixed> = []
-
Integrations (shortcode attributes) for customizing the query.
- $is_reset_request : bool = false
-
Whether this query is a reset request.
Return values
Query —The created Query instance.
get_filters()
Get the filters associated with this query.
public
get_filters() : array<string|int, Filter>
Return values
array<string|int, Filter> —The filters.
get_filters_with_search_query()
Get the filters with a search query.
public
get_filters_with_search_query() : array<string|int, Filter>
Return values
array<string|int, Filter> —The filters with a search query.
get_integration()
Get a specific integration value.
public
get_integration(string $key[, mixed $default = null ]) : mixed
Parameters
- $key : string
-
The integration key.
- $default : mixed = null
-
The default value if key doesn't exist.
Return values
mixed —The integration value or default.
get_integrations()
Get the integrations.
public
get_integrations() : array<string|int, mixed>
Return values
array<string|int, mixed> —The integrations array.
get_order_by()
Get the order by for the query.
public
get_order_by() : string|null
Return values
string|null —The order by for the query.
get_paged()
Get the current page number.
public
get_paged() : int
Return values
int —The current page number.
get_parameters()
Get the parameters for the filters.
public
get_parameters() : array<string|int, mixed>|null
Return values
array<string|int, mixed>|null —The parameters for the filters.
get_possible_choices()
Get the possible choices for the filters.
public
get_possible_choices() : array<string, array<string, string|string[]>>
Return values
array<string, array<string, string|string[]>> —The possible choices for the filters.
get_product_ids()
Get the found product IDs.
public
get_product_ids() : array<string|int, mixed>
Return values
array<string|int, mixed> —The found product IDs.
get_queriable_filters()
Get the queriable filters that have a search query.
public
get_queriable_filters() : array<string|int, Filter>
Return values
array<string|int, Filter> —The queriable filters.
get_query_args()
Get the query arguments.
public
get_query_args() : array<string|int, mixed>
Return values
array<string|int, mixed> —The query arguments.
get_results()
Get the results for the query.
public
get_results() : array<string|int, mixed>
Return values
array<string|int, mixed> —has_no_results()
Check if the query has no results.
public
has_no_results() : bool
Return values
bool —Whether the query has no results.
has_search_filter()
Check if the query has a search filter.
public
has_search_filter() : bool
Return values
bool —Whether the query has a search filter.
is_preflight()
Check if this query is a preflight request.
public
is_preflight() : bool
Return values
bool —Whether this query is a preflight request.
is_reset_request()
Check if this query is a reset request.
public
is_reset_request() : bool
Return values
bool —Whether this query is a reset request.
maybe_insert_search_query()
Maybe insert the search query into the WP_Query.
public
maybe_insert_search_query(WP_Query &$wp_query) : void
Parameters
- $wp_query : WP_Query
-
The WP_Query object.
Return values
void —prepare_results()
Prepare the results for the query.
public
prepare_results() : void
Return values
void —set_filters()
Set the filters associated with this query.
public
set_filters(array<string|int, Filter> $filters) : $this
Parameters
- $filters : array<string|int, Filter>
-
The filters to set.
Return values
$this —set_integrations()
Set the integrations.
public
set_integrations(array<string|int, mixed> $integrations) : $this
Parameters
- $integrations : array<string|int, mixed>
-
The integrations to set.
Return values
$this —set_is_preflight()
Set whether this query is a preflight request.
public
set_is_preflight(bool $is_preflight) : $this
Parameters
- $is_preflight : bool
-
Whether this query is a preflight request.
Return values
$this —set_is_reset_request()
Set whether this query is a reset request.
public
set_is_reset_request(bool $is_reset_request) : $this
Parameters
- $is_reset_request : bool
-
Whether this query is a reset request.
Return values
$this —set_no_results()
Set whether the query has no results.
public
set_no_results(bool $no_results) : self
Parameters
- $no_results : bool
-
Whether the query has no results.
Return values
self —set_order_by()
Set the order by for the query.
public
set_order_by(string $order_by) : $this
Parameters
- $order_by : string
-
The order by to set.
Return values
$this —set_paged()
Set the current page number.
public
set_paged(int $paged) : self
Parameters
- $paged : int
-
The page number to set.
Return values
self —set_parameters()
Set the parameters for the filters.
public
set_parameters(array<string, string|string[]> $parameters) : $this
Parameters
- $parameters : array<string, string|string[]>
-
The parameters to set.
Return values
$this —set_parameters_to_filters()
Set the parameters to the filters.
public
set_parameters_to_filters() : $this
Return values
$this —set_possible_choices()
Set the possible choices for the filters.
public
set_possible_choices(array<string, array<string, string|string[]>> $possible_choices) : $this
Parameters
- $possible_choices : array<string, array<string, string|string[]>>
-
The possible choices to set.
Return values
$this —set_query_args()
Set the query arguments.
public
set_query_args(array<string|int, mixed> $query_args) : $this
Parameters
- $query_args : array<string|int, mixed>
-
The query arguments to set.
Return values
$this —apply_query_args()
Apply query arguments to constrain the base WP_Query.
private
apply_query_args(WP_Query $query) : void
Parameters
- $query : WP_Query
-
The query to modify.
Return values
void —apply_sorting_to_product_ids()
Apply sorting to the found product IDs based on the order_by parameter.
private
apply_sorting_to_product_ids() : void
Return values
void —collect_possible_choices()
Collect the possible choices for the filters.
private
collect_possible_choices([array<string|int, mixed> $posts = [] ]) : void
Parameters
- $posts : array<string|int, mixed> = []
-
The posts to collect the possible choices from.
Return values
void —get_active_filters_list()
Get the active filters list.
private
get_active_filters_list() : array<string|int, mixed>
This returns an array of filters that are currently active and their selected values.
Values may be an array if the filter is allows multiple selections.
Return values
array<string|int, mixed> —The active filters list.
get_all_products()
Get all products that could potentially be shown using WooCommerce's query logic.
private
get_all_products() : array<string|int, mixed>
Return values
array<string|int, mixed> —Array of product IDs.
get_matching_posts()
Get the posts that match the filters.
private
get_matching_posts() : array<string|int, mixed>
Return values
array<string|int, mixed> —The posts that match the filters.
get_post_ids_from_query_args()
Get post IDs from query args constraints.
private
static get_post_ids_from_query_args(array<string|int, mixed> $query_args) : array<string|int, mixed>
Parameters
- $query_args : array<string|int, mixed>
-
The query arguments to apply.
Return values
array<string|int, mixed> —Array of post IDs that match the query constraints.
get_posts_per_page()
Get the number of posts per page based on integrations.
private
get_posts_per_page() : int
Return values
int —Number of posts per page.
get_search_query()
Get the search query from the first filter of the type Search.
private
get_search_query() : string|null
Return values
string|null —The search query or null if not found.
has_active_filters()
Check if there are any active filters in the current query.
private
has_active_filters() : bool
An active filter is one that has been applied by the user and has a search query/value set. This is determined by checking if there are any queriable filters, which are filters that have search parameters set.
Return values
bool —True if there are active filters, false otherwise.
sanitize_integrations()
Sanitize and validate integrations.
private
sanitize_integrations(array<string|int, mixed> $integrations) : array<string|int, mixed>
Parameters
- $integrations : array<string|int, mixed>
-
Raw integrations.
Return values
array<string|int, mixed> —Sanitized integrations.
sanitize_query_args()
Sanitize and validate query arguments.
private
sanitize_query_args(array<string|int, mixed> $query_args) : array<string|int, mixed>
Parameters
- $query_args : array<string|int, mixed>
-
Raw query arguments.
Return values
array<string|int, mixed> —Sanitized query arguments.