Automattic\WooCommerce\Blocks\BlockTypes

ProductDetails::hide_empty_accordion_itemsprivateWC 1.0

Hide empty accordion items.

Метод класса: ProductDetails{}

Хуков нет.

Возвращает

Массив. Parsed block.

Использование

// private - только в коде основоного (родительского) класса
$result = $this->hide_empty_accordion_items( $parsed_block, $context );
$parsed_block(массив) (обязательный)
Parsed block.
$context(массив) (обязательный)
Context.

Код ProductDetails::hide_empty_accordion_items() WC 10.8.1

private function hide_empty_accordion_items( $parsed_block, $context ) {
	if ( ! $this->has_accordion( $parsed_block ) ) {
		return $parsed_block;
	}

	if ( 'core/accordion' === $parsed_block['blockName'] || 'woocommerce/accordion-group' === $parsed_block['blockName'] ) {
		foreach ( $parsed_block['innerBlocks'] as $key => $inner_block ) {
			$parsed_block['innerBlocks'][ $key ] = $this->mark_accordion_item_hidden( $inner_block, $context );
		}
		$parsed_block['innerBlocks']  = array_values( array_filter( $parsed_block['innerBlocks'] ) );
		$opening_tag                  = reset( $parsed_block['innerContent'] );
		$closing_tag                  = end( $parsed_block['innerContent'] );
		$parsed_block['innerContent'] = array_merge(
			array( $opening_tag ),
			array_fill( 0, count( $parsed_block['innerBlocks'] ), null ),
			array( $closing_tag )
		);
		return $parsed_block;
	}

	foreach ( $parsed_block['innerBlocks'] as $key => $inner_block ) {
		$parsed_block['innerBlocks'][ $key ] = $this->hide_empty_accordion_items( $inner_block, $context );
	}

	return $parsed_block;
}