Automattic\WooCommerce\Blocks\Utils

BlockTemplateUtils::has_block_including_patternspublic 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.

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

Хуков нет.

Возвращает

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

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

$result = BlockTemplateUtils::has_block_including_patterns( $block_names, $blocks );
$block_names(string[]) (обязательный)
Full block types to look for.
$blocks(WP_Block[]) (обязательный)
Array of block objects.

Код BlockTemplateUtils::has_block_including_patterns() WC 10.3.6

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'] );
			if ( isset( $pattern['content'] ) ) {
				$pattern_blocks = parse_blocks( $pattern['content'] );
				if ( self::has_block_including_patterns( $block_names, $pattern_blocks ) ) {
					return true;
				}
			}
		}
	}

	return false;
}