Automattic\WooCommerce\StoreApi\Utilities

ProductQueryFilters::get_taxonomy_countspublicWC 1.0

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() 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;
}