From 6eec46900fc88ff2f9186dd49cfbf21bb28a96b8 Mon Sep 17 00:00:00 2001 From: isabel_brison Date: Thu, 30 May 2024 07:35:13 +0000 Subject: [PATCH] Editor: allow registering block styles for multiple block types. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Updates the `WP_Block_Styles_Registry` class to allow registering an array of blocks. Props aaronrobertshaw, talldanwp, isabel_brison. Fixes #61274. Built from https://develop.svn.wordpress.org/trunk@58246 git-svn-id: http://core.svn.wordpress.org/trunk@57709 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/blocks.php | 12 ++++++----- .../class-wp-block-styles-registry.php | 21 ++++++++++++------- wp-includes/version.php | 2 +- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/wp-includes/blocks.php b/wp-includes/blocks.php index 6727298d75..cda01dac4e 100644 --- a/wp-includes/blocks.php +++ b/wp-includes/blocks.php @@ -1902,14 +1902,16 @@ function block_version( $content ) { * Registers a new block style. * * @since 5.3.0 + * @since 6.6.0 Updated types as registry now allows registering styles for multiple block types at once. * * @link https://developer.wordpress.org/block-editor/reference-guides/block-api/block-styles/ * - * @param string $block_name Block type name including namespace. - * @param array $style_properties Array containing the properties of the style name, label, - * style_handle (name of the stylesheet to be enqueued), - * inline_style (string containing the CSS to be added). - * See WP_Block_Styles_Registry::register(). + * @param string|array $block_name Block type name including namespace or array of namespaced block type names. + * @param array $style_properties Array containing the properties of the style name, label, + * style_handle (name of the stylesheet to be enqueued), + * inline_style (string containing the CSS to be added), + * style_data (theme.json-like array to generate CSS from). + * See WP_Block_Styles_Registry::register(). * @return bool True if the block style was registered with success and false otherwise. */ function register_block_style( $block_name, $style_properties ) { diff --git a/wp-includes/class-wp-block-styles-registry.php b/wp-includes/class-wp-block-styles-registry.php index 317c6489b2..c0ed2a3545 100644 --- a/wp-includes/class-wp-block-styles-registry.php +++ b/wp-includes/class-wp-block-styles-registry.php @@ -42,11 +42,12 @@ final class WP_Block_Styles_Registry { * or with an inline tag. * * @since 5.3.0 + * @since 6.6.0 Added ability to register style across multiple block types along with theme.json-like style data. * * @link https://developer.wordpress.org/block-editor/reference-guides/block-api/block-styles/ * - * @param string $block_name Block type name including namespace. - * @param array $style_properties { + * @param string|array $block_name Block type name including namespace or array of namespaced block type names. + * @param array $style_properties { * Array containing the properties of the style. * * @type string $name The identifier of the style used to compute a CSS class. @@ -56,16 +57,17 @@ final class WP_Block_Styles_Registry { * @type string $style_handle The handle to an already registered style that should be * enqueued in places where block styles are needed. * @type bool $is_default Whether this is the default style for the block type. + * @type array $style_data Theme.json-like object to generate CSS from. * } * @return bool True if the block style was registered with success and false otherwise. */ public function register( $block_name, $style_properties ) { - if ( ! isset( $block_name ) || ! is_string( $block_name ) ) { + if ( ! is_string( $block_name ) && ! is_array( $block_name ) ) { _doing_it_wrong( __METHOD__, - __( 'Block name must be a string.' ), - '5.3.0' + __( 'Block name must be a string or array.' ), + '6.6.0' ); return false; } @@ -89,11 +91,14 @@ final class WP_Block_Styles_Registry { } $block_style_name = $style_properties['name']; + $block_names = is_string( $block_name ) ? array( $block_name ) : $block_name; - if ( ! isset( $this->registered_block_styles[ $block_name ] ) ) { - $this->registered_block_styles[ $block_name ] = array(); + foreach ( $block_names as $name ) { + if ( ! isset( $this->registered_block_styles[ $name ] ) ) { + $this->registered_block_styles[ $name ] = array(); + } + $this->registered_block_styles[ $name ][ $block_style_name ] = $style_properties; } - $this->registered_block_styles[ $block_name ][ $block_style_name ] = $style_properties; return true; } diff --git a/wp-includes/version.php b/wp-includes/version.php index 288fa74861..1c2d39ea76 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -16,7 +16,7 @@ * * @global string $wp_version */ -$wp_version = '6.6-alpha-58245'; +$wp_version = '6.6-alpha-58246'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.