Make WordPress Core


Ignore:
Timestamp:
05/30/2024 07:33:23 AM (19 months ago)
Author:
isabel_brison
Message:

Editor: allow registering block styles for multiple block types.

Updates the WP_Block_Styles_Registry class to allow registering an array of blocks.

Props aaronrobertshaw, talldanwp, isabel_brison.
Fixes #61274.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/class-wp-block-styles-registry.php

    r54133 r58246  
    4343     *
    4444     * @since 5.3.0
     45     * @since 6.6.0 Added ability to register style across multiple block types along with theme.json-like style data.
    4546     *
    4647     * @link https://developer.wordpress.org/block-editor/reference-guides/block-api/block-styles/
    4748     *
    48      * @param string $block_name       Block type name including namespace.
    49      * @param array  $style_properties {
     49     * @param string|array $block_name       Block type name including namespace or array of namespaced block type names.
     50     * @param array        $style_properties {
    5051     *     Array containing the properties of the style.
    5152     *
     
    5758     *                                enqueued in places where block styles are needed.
    5859     *     @type bool   $is_default   Whether this is the default style for the block type.
     60     *     @type array  $style_data   Theme.json-like object to generate CSS from.
    5961     * }
    6062     * @return bool True if the block style was registered with success and false otherwise.
     
    6264    public function register( $block_name, $style_properties ) {
    6365
    64         if ( ! isset( $block_name ) || ! is_string( $block_name ) ) {
    65             _doing_it_wrong(
    66                 __METHOD__,
    67                 __( 'Block name must be a string.' ),
    68                 '5.3.0'
     66        if ( ! is_string( $block_name ) && ! is_array( $block_name ) ) {
     67            _doing_it_wrong(
     68                __METHOD__,
     69                __( 'Block name must be a string or array.' ),
     70                '6.6.0'
    6971            );
    7072            return false;
     
    9092
    9193        $block_style_name = $style_properties['name'];
    92 
    93         if ( ! isset( $this->registered_block_styles[ $block_name ] ) ) {
    94             $this->registered_block_styles[ $block_name ] = array();
    95         }
    96         $this->registered_block_styles[ $block_name ][ $block_style_name ] = $style_properties;
     94        $block_names      = is_string( $block_name ) ? array( $block_name ) : $block_name;
     95
     96        foreach ( $block_names as $name ) {
     97            if ( ! isset( $this->registered_block_styles[ $name ] ) ) {
     98                $this->registered_block_styles[ $name ] = array();
     99            }
     100            $this->registered_block_styles[ $name ][ $block_style_name ] = $style_properties;
     101        }
    97102
    98103        return true;
Note: See TracChangeset for help on using the changeset viewer.