Automattic\WooCommerce\Blocks\BlockTypes
ProductFilterStatus::render
Include and render the block.
Метод класса: ProductFilterStatus{}
Хуков нет.
Возвращает
Строку
. Rendered block type output.
Использование
// protected - в коде основоного (родительского) или дочернего класса $result = $this->render( $attributes, $content, $block );
- $attributes(массив) (обязательный)
- Block attributes.
По умолчанию: empty array - $content(строка) (обязательный)
- Block content.
По умолчанию: empty string - $block(WP_Block) (обязательный)
- Block instance.
Код ProductFilterStatus::render() ProductFilterStatus::render WC 9.9.4
protected function render( $attributes, $content, $block ) { // don't render if its admin, or ajax in progress. if ( is_admin() || wp_doing_ajax() ) { return ''; } $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 ) { return array( 'label' => $stock_statuses[ $item['status'] ], 'ariaLabel' => $stock_statuses[ $item['status'] ], 'value' => $item['status'], 'selected' => in_array( $item['status'], $selected_stock_statuses, true ), 'count' => $item['count'], 'type' => 'status', ); }, $stock_status_data ); $filter_context = array( 'items' => array_values( $filter_options ), 'showCounts' => $attributes['showCounts'] ?? false, ); $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( /* translators: {{label}} is the status filter item label. */ 'activeLabelTemplate' => __( 'Status: {{label}}', 'woocommerce' ), 'filterType' => 'status', ), JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP ), ); if ( empty( $filter_options ) ) { $wrapper_attributes['hidden'] = true; $wrapper_attributes['class'] = 'wc-block-product-filter--hidden'; } 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; }, '' ) ); }