Automattic\WooCommerce\Blocks\BlockTypes\ProductCollection

QueryBuilder::get_filter_by_rating_query()privateWC 1.0

Return a query that filters products by rating.

Method of the class: QueryBuilder{}

No Hooks.

Return

Array.

Usage

// private - for code of main (parent) class only
$result = $this->get_filter_by_rating_query();

QueryBuilder::get_filter_by_rating_query() code WC 9.6.1

private function get_filter_by_rating_query() {
	$filter_rating_values = get_query_var( RatingFilter::RATING_QUERY_VAR );
	if ( empty( $filter_rating_values ) ) {
		return array();
	}

	$parsed_filter_rating_values = explode( ',', $filter_rating_values );
	$product_visibility_terms    = wc_get_product_visibility_term_ids();

	if ( empty( $parsed_filter_rating_values ) || empty( $product_visibility_terms ) ) {
		return array();
	}

	$rating_terms = array_map(
		function ( $rating ) use ( $product_visibility_terms ) {
			return $product_visibility_terms[ 'rated-' . $rating ];
		},
		$parsed_filter_rating_values
	);

	return array(
		// phpcs:ignore WordPress.DB.SlowDBQuery
		'tax_query' => array(
			array(
				'field'         => 'term_taxonomy_id',
				'taxonomy'      => 'product_visibility',
				'terms'         => $rating_terms,
				'operator'      => 'IN',
				'rating_filter' => true,
			),
		),
	);
}