$pattern_title, 'content' => $pattern_content, 'categories' => [ $category_slug ], ]; ob_start(); include $file; $pattern['content'] = ob_get_clean(); if ( $file_type === 'php' ) { $pattern['inserter'] = false; } if ( $category_slug === 'page' ) { $pattern['blockTypes'] = [ 'core/post-content' ]; $pattern['postTypes'] = [ 'page' ]; } if ( in_array( $category_slug, [ 'header', 'footer' ], true ) ) { $pattern['blockTypes'] = [ 'core/template-part/' . $category_slug ]; } if ( $category_slug === 'template' ) { $pattern['inserter'] = false; } $exclude = [ 'icon-guide', ]; if ( in_array( $pattern_base, $exclude, true ) ) { $pattern['inserter'] = false; } $patterns[ $pattern_slug ] = $pattern; } } $patterns = apply_filters( 'blockify_patterns', $patterns ); foreach ( $patterns as $pattern => $args ) { register_block_pattern( $pattern, $args ); } } add_action( 'init', NS . 'auto_register_pattern_categories', 11 ); /** * Generates any missing categories for registered patterns. * * @since 0.0.2 * * @return void */ function auto_register_pattern_categories(): void { $block_patterns = WP_Block_Patterns_Registry::get_instance()->get_all_registered(); foreach ( $block_patterns as $block_pattern ) { if ( ! isset( $block_pattern['categories'] ) ) { continue; } foreach ( $block_pattern['categories'] as $category ) { $categories = wp_list_pluck( WP_Block_Pattern_Categories_Registry::get_instance()->get_all_registered(), 'name' ); if ( in_array( $category, $categories, true ) ) { continue; } register_block_pattern_category( $category, [ 'label' => ucfirst( $category ), ] ); } } }