WC_Product_Collection_Block_Tracking::get_query_filters_usage_dataprivateWC 1.0

Parse the collection query filters from the query attributes.

Method of the class: WC_Product_Collection_Block_Tracking{}

No Hooks.

Returns

Array. The filters data for tracking.

Usage

// private - for code of main (parent) class only
$result = $this->get_query_filters_usage_data( $block );
$block(array) (required)
The parsed block.

WC_Product_Collection_Block_Tracking::get_query_filters_usage_data() code WC 9.9.4

private function get_query_filters_usage_data( $block ) {

	if ( ! isset( $block['attrs'] ) ) {
		return array();
	}

	$query_attrs = $block['attrs']['query'] ?? array();
	$filters     = array(
		'inherit'      => 'no',
		'order-by'     => 'no',
		'on-sale'      => 'no',
		'stock-status' => 'no',
		'handpicked'   => 'no',
		'keyword'      => 'no',
		'attributes'   => 'no',
		'category'     => 'no',
		'tag'          => 'no',
		'featured'     => 'no',
		'created'      => 'no',
		'price'        => 'no',
	);

	if ( ! empty( $query_attrs['inherit'] ) && true === $query_attrs['inherit'] ) {
		$filters['inherit'] = 'yes';
	}

	if ( ( ! empty( $query_attrs['order'] ) && 'asc' !== $query_attrs['order'] ) || ( ! empty( $query_attrs['orderBy'] ) && 'title' !== $query_attrs['orderBy'] ) ) {
		$filters['order-by'] = 'yes';
	}

	if ( ! empty( $query_attrs['woocommerceOnSale'] ) ) {
		$filters['on-sale'] = 'yes';
	}

	if ( ! empty( $query_attrs['woocommerceStockStatus'] ) ) {
		$stock_statuses = wc_get_product_stock_status_options();
		$default_values = 'yes' === get_option( 'woocommerce_hide_out_of_stock_items' ) ? array_diff_key( $stock_statuses, array( ProductStockStatus::OUT_OF_STOCK => '' ) ) : $stock_statuses;
		$default_diff   = array_diff( array_keys( $default_values ), $query_attrs['woocommerceStockStatus'] );
		if ( ! empty( $default_diff ) ) {
			$filters['stock-status'] = 'yes';
		}
	}

	if ( ! empty( $query_attrs['woocommerceAttributes'] ) ) {
		$filters['attributes'] = 'yes';
	}

	if ( ! empty( $query_attrs['timeFrame'] ) ) {
		$filters['created'] = 'yes';
	}

	if ( ! empty( $query_attrs['taxQuery'] ) ) {

		if ( ! empty( $query_attrs['taxQuery']['product_cat'] ) ) {
			$filters['category'] = 'yes';
		}

		if ( ! empty( $query_attrs['taxQuery']['product_tag'] ) ) {
			$filters['tag'] = 'yes';
		}
	}

	if ( ! empty( $query_attrs['woocommerceHandPickedProducts'] ) ) {
		$filters['handpicked'] = 'yes';
	}

	if ( ! empty( $query_attrs['search'] ) ) {
		$filters['keyword'] = 'yes';
	}

	if ( ! empty( $query_attrs['featured'] ) ) {
		$filters['featured'] = 'yes';
	}

	if ( ! empty( $query_attrs['priceRange'] ) ) {
		$filters['price'] = 'yes';
	}

	return $filters;
}