Automattic\WooCommerce\Blocks\Utils

BlockTemplateUtils::has_block_including_patterns()public staticWC 1.0

Determines whether the provided $blocks contains any of the $block_names, or if they contain a pattern that contains any of the $block_names.

Method of the class: BlockTemplateUtils{}

No Hooks.

Return

true|false. Whether the content contains the specified block.

Usage

$result = BlockTemplateUtils::has_block_including_patterns( $block_names, $blocks );
$block_names(string[]) (required)
Full block types to look for.
$blocks(WP_Block[]) (required)
Array of block objects.

BlockTemplateUtils::has_block_including_patterns() code WC 9.6.1

public static function has_block_including_patterns( $block_names, $blocks ) {
	$flattened_blocks = self::flatten_blocks( $blocks );

	foreach ( $flattened_blocks as &$block ) {
		if ( isset( $block['blockName'] ) && in_array( $block['blockName'], $block_names, true ) ) {
			return true;
		}
		if (
			'core/pattern' === $block['blockName'] &&
			isset( $block['attrs']['slug'] )
		) {
			$registry       = WP_Block_Patterns_Registry::get_instance();
			$pattern        = $registry->get_registered( $block['attrs']['slug'] );
			$pattern_blocks = parse_blocks( $pattern['content'] );

			if ( self::has_block_including_patterns( $block_names, $pattern_blocks ) ) {
				return true;
			}
		}
	}

	return false;
}