Make WordPress Core

Changeset 58246


Ignore:
Timestamp:
05/30/2024 07:33:23 AM (14 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.

Location:
trunk
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/blocks.php

    r58186 r58246  
    19031903 *
    19041904 * @since 5.3.0
     1905 * @since 6.6.0 Updated types as registry now allows registering styles for multiple block types at once.
    19051906 *
    19061907 * @link https://developer.wordpress.org/block-editor/reference-guides/block-api/block-styles/
    19071908 *
    1908  * @param string $block_name       Block type name including namespace.
    1909  * @param array  $style_properties Array containing the properties of the style name, label,
    1910  *                                 style_handle (name of the stylesheet to be enqueued),
    1911  *                                 inline_style (string containing the CSS to be added).
    1912  *                                 See WP_Block_Styles_Registry::register().
     1909 * @param string|array $block_name       Block type name including namespace or array of namespaced block type names.
     1910 * @param array        $style_properties Array containing the properties of the style name, label,
     1911 *                                       style_handle (name of the stylesheet to be enqueued),
     1912 *                                       inline_style (string containing the CSS to be added),
     1913 *                                       style_data (theme.json-like array to generate CSS from).
     1914 *                                       See WP_Block_Styles_Registry::register().
    19131915 * @return bool True if the block style was registered with success and false otherwise.
    19141916 */
  • 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.