From bd63261888d8f37c598cba3b95c148e9906fd49b Mon Sep 17 00:00:00 2001 From: Riad Benguella Date: Thu, 16 Jul 2020 11:48:49 +0000 Subject: [PATCH] Block Editor: Add theme support flag to opt-out of Core Block Patterns. WordPress Core comes by default with a number of block patterns and a frequent request was to be able to opt-out of the Core block patterns. You can now opt-out using remove_theme_support( 'core-block-patterns' ) Props desrosj, nosolosw. Fixes #50669. git-svn-id: https://develop.svn.wordpress.org/trunk@48492 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/block-patterns.php | 58 +++++++++++++++++++----------- 1 file changed, 37 insertions(+), 21 deletions(-) diff --git a/src/wp-includes/block-patterns.php b/src/wp-includes/block-patterns.php index fe80dc921c..742db0fc4f 100644 --- a/src/wp-includes/block-patterns.php +++ b/src/wp-includes/block-patterns.php @@ -6,27 +6,43 @@ * @since 5.5.0 */ -$core_block_patterns = array( - 'text-two-columns', - 'two-buttons', - 'two-images', - 'text-two-columns-with-images', - 'text-three-columns-buttons', - 'large-header', - 'large-header-paragraph', - 'three-buttons', - 'quote', -); +add_theme_support( 'core-block-patterns' ); -foreach ( $core_block_patterns as $core_block_pattern ) { - register_block_pattern( - 'core/' . $core_block_pattern, - require __DIR__ . '/block-patterns/' . $core_block_pattern . '.php' - ); +/** + * Registers the core block patterns and categories. + * + * @since 5.5.0 + * @private + */ +function _register_core_block_patterns_and_categories() { + $should_register_core_patterns = get_theme_support( 'core-block-patterns' ); + + if ( $should_register_core_patterns ) { + $core_block_patterns = array( + 'text-two-columns', + 'two-buttons', + 'two-images', + 'text-two-columns-with-images', + 'text-three-columns-buttons', + 'large-header', + 'large-header-paragraph', + 'three-buttons', + 'quote', + ); + + foreach ( $core_block_patterns as $core_block_pattern ) { + register_block_pattern( + 'core/' . $core_block_pattern, + require __DIR__ . '/block-patterns/' . $core_block_pattern . '.php' + ); + } + } + + register_block_pattern_category( 'buttons', array( 'label' => _x( 'Buttons', 'Block pattern category', 'gutenberg' ) ) ); + register_block_pattern_category( 'columns', array( 'label' => _x( 'Columns', 'Block pattern category', 'gutenberg' ) ) ); + register_block_pattern_category( 'gallery', array( 'label' => _x( 'Gallery', 'Block pattern category', 'gutenberg' ) ) ); + register_block_pattern_category( 'header', array( 'label' => _x( 'Headers', 'Block pattern category', 'gutenberg' ) ) ); + register_block_pattern_category( 'text', array( 'label' => _x( 'Text', 'Block pattern category', 'gutenberg' ) ) ); } -register_block_pattern_category( 'buttons', array( 'label' => _x( 'Buttons', 'Block pattern category', 'gutenberg' ) ) ); -register_block_pattern_category( 'columns', array( 'label' => _x( 'Columns', 'Block pattern category', 'gutenberg' ) ) ); -register_block_pattern_category( 'gallery', array( 'label' => _x( 'Gallery', 'Block pattern category', 'gutenberg' ) ) ); -register_block_pattern_category( 'header', array( 'label' => _x( 'Headers', 'Block pattern category', 'gutenberg' ) ) ); -register_block_pattern_category( 'text', array( 'label' => _x( 'Text', 'Block pattern category', 'gutenberg' ) ) ); +add_action( 'init', '_register_core_block_patterns_and_categories' );