Automattic\WooCommerce\Blocks\Utils
BlockTemplateUtils::has_block_including_patterns
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() 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;
}