WC_Product_Collection_Block_Tracking::get_query_filters_usage_data
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() WC Product Collection Block Tracking::get query filters usage data code WC 10.7.0
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;
}