Automattic\WooCommerce\StoreApi\Utilities
ProductQueryFilters::get_taxonomy_counts
Get taxonomy counts for the current products.
Method of the class: ProductQueryFilters{}
No Hooks.
Returns
Array. termId=>count pairs.
Usage
$ProductQueryFilters = new ProductQueryFilters(); $ProductQueryFilters->get_taxonomy_counts( $request, $taxonomies );
- $request(WP_REST_Request) (required)
- The request object.
- $taxonomies(array)
- Taxonomies to count.
Default: []
ProductQueryFilters::get_taxonomy_counts() ProductQueryFilters::get taxonomy counts code WC 10.3.6
public function get_taxonomy_counts( $request, $taxonomies = [] ) {
// Remove paging and sorting params from the request.
$request->set_param( 'page', null );
$request->set_param( 'per_page', null );
$request->set_param( 'order', null );
$request->set_param( 'orderby', null );
// Convert request to query_vars for FilterData.
$product_query = new ProductQuery();
$query_vars = $product_query->prepare_objects_query( $request );
// Use FilterData with ProductQuery as QueryClausesGenerator.
$container = wc_get_container();
$filter_data_provider = $container->get( \Automattic\WooCommerce\Internal\ProductFilters\FilterDataProvider::class );
$filter_data = $filter_data_provider->with( $product_query );
$all_counts = array();
// Get counts for each taxonomy individually.
foreach ( $taxonomies as $taxonomy ) {
$counts = $filter_data->get_taxonomy_counts( $query_vars, $taxonomy );
$all_counts = $all_counts + $counts; // Use + operator to preserve keys.
}
return $all_counts;
}