Automattic\WooCommerce\Blocks\BlockTypes
ProductFilterStatus::render()
Include and render the block.
Method of the class: ProductFilterStatus{}
No Hooks.
Return
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.
Default: empty array - $content(string) (required)
- Block content.
Default: empty string - $block(WP_Block) (required)
- Block instance.
ProductFilterStatus::render() ProductFilterStatus::render code WC 9.6.0
protected function render( $attributes, $content, $block ) { $stock_status_data = $this->get_stock_status_counts( $block ); $stock_statuses = wc_get_product_stock_status_options(); $filter_params = $block->context['filterParams'] ?? array(); $query = $filter_params[ self::STOCK_STATUS_QUERY_VAR ] ?? ''; $selected_stock_statuses = array_filter( explode( ',', $query ) ); $filter_options = array_map( function ( $item ) use ( $stock_statuses, $selected_stock_statuses, $attributes ) { $label = $stock_statuses[ $item['status'] ] . ( $attributes['showCounts'] ? ' (' . $item['count'] . ')' : '' ); return array( 'label' => $label, 'value' => $item['status'], 'selected' => in_array( $item['status'], $selected_stock_statuses, true ), 'rawData' => $item, ); }, $stock_status_data ); $filter_context = array( 'filterData' => array( 'items' => $filter_options, 'actions' => array( 'toggleFilter' => "{$this->get_full_block_name()}::actions.toggleFilter", ), ), 'hasSelectedFilters' => ! empty( $selected_stock_statuses ), ); $wrapper_attributes = array( 'data-wc-interactive' => wp_json_encode( array( 'namespace' => $this->get_full_block_name() ), JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP ), 'data-wc-context' => wp_json_encode( array( 'hasSelectedFilters' => $filter_context['hasSelectedFilters'], 'hasFilterOptions' => ! empty( $filter_options ), ), JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP ), 'data-wc-bind--hidden' => '!context.hasFilterOptions', ); if ( empty( $filter_options ) ) { $wrapper_attributes['hidden'] = true; } 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['filterData'] ) ) )->render(); return $carry; }, '' ) ); }