Automattic\WooCommerce\Blocks\BlockTypes
ProductFilterActive::render
Render the block.
Method of the class: ProductFilterActive{}
No Hooks.
Returns
String. Rendered block type output.
Usage
// protected - for code of main (parent) or child class $result = $this->render( $attributes, $content, $block );
- $attributes(array) (required)
- Block attributes.
- $content(string) (required)
- Block content.
- $block(WP_Block) (required)
- Block instance.
ProductFilterActive::render() ProductFilterActive::render code WC 10.5.0
protected function render( $attributes, $content, $block ) {
if ( ! isset( $block->context['activeFilters'] ) ) {
return $content;
}
$active_filters = $block->context['activeFilters'];
$filter_context = array(
'items' => $active_filters,
);
$wrapper_attributes = array(
'data-wp-interactive' => 'woocommerce/product-filters',
'data-wp-key' => wp_unique_prefixed_id( $this->get_full_block_name() ),
'data-wp-context' => wp_json_encode(
array(
'filterType' => 'active',
),
JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP
),
'data-wp-bind--hidden' => '!state.hasActiveFilters',
'data-wp-class--wc-block-product-filter--hidden' => '!state.hasActiveFilters',
);
wp_interactivity_state(
'woocommerce/product-filters',
array(
'hasActiveFilters' => ! empty( $active_filters ),
),
);
wp_interactivity_config(
'woocommerce/product-filters',
array(
/* translators: {{label}} is the label of the active filter item. */
'removeLabelTemplate' => __( 'Remove filter: {{label}}', 'woocommerce' ),
)
);
return sprintf(
'<div %1$s>%2$s</div>',
get_block_wrapper_attributes( $wrapper_attributes ),
array_reduce(
$block->parsed_block['innerBlocks'],
function ( $carry, $parsed_block ) use ( $filter_context ) {
$carry .= ( new \WP_Block( $parsed_block, array( 'filterData' => $filter_context ) ) )->render();
return $carry;
},
''
)
);
}