Automattic\WooCommerce\Blocks\BlockTypes

ProductDetails::hide_empty_accordion_itemsprivateWC 1.0

Hide empty accordion items.

Method of the class: ProductDetails{}

No Hooks.

Returns

Array. Parsed block.

Usage

// private - for code of main (parent) class only
$result = $this->hide_empty_accordion_items( $parsed_block, $context );
$parsed_block(array) (required)
Parsed block.
$context(array) (required)
Context.

ProductDetails::hide_empty_accordion_items() code WC 10.6.2

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;
}