--- a/wp/wp-includes/class-wp-block-styles-registry.php Thu Sep 29 08:06:27 2022 +0200
+++ b/wp/wp-includes/class-wp-block-styles-registry.php Fri Sep 05 18:40:08 2025 +0200
@@ -12,6 +12,7 @@
*
* @since 5.3.0
*/
+#[AllowDynamicProperties]
final class WP_Block_Styles_Registry {
/**
* Registered block styles, as `$block_name => $block_style_name => $block_style_properties` multidimensional arrays.
@@ -34,21 +35,39 @@
/**
* Registers a block style for the given block type.
*
+ * If the block styles are present in a standalone stylesheet, register it and pass
+ * its handle as the `style_handle` argument. If the block styles should be inline,
+ * use the `inline_style` argument. Usually, one of them would be used to pass CSS
+ * styles. However, you could also skip them and provide CSS styles in any stylesheet
+ * 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 Array containing the properties of the style name, label,
- * is_default, style_handle (name of the stylesheet to be enqueued),
- * inline_style (string containing the CSS to be added).
+ * @param string|string[] $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.
+ * @type string $label A human-readable label for the style.
+ * @type string $inline_style Inline CSS code that registers the CSS class required
+ * for the style.
+ * @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;
}
@@ -72,11 +91,14 @@
}
$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;
}