Make WordPress Core

Changeset 59359


Ignore:
Timestamp:
11/06/2024 12:42:12 AM (4 weeks ago)
Author:
ramonopoly
Message:

Performance: reuse block metadata in WP_Theme_JSON::get_valid_block_style_variations()

In WP_Theme_JSON::get_valid_block_style_variations(), the method was calling self::get_blocks_metadata() even though the metadata was already retrieved in the parent function. This update reuses the existing block metadata instead of calling it again.

A new optional parameter, $blocks_metadata, has been added to the function, allowing it to use pre-fetched metadata when available, improving efficiency.

Fewer self::get_blocks_metadata() calls mean faster processing, especially in themes with many blocks.

Props mukesh27, ramonopoly, aaronrobertshaw, flixos90.
Fixes #62291.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/class-wp-theme-json.php

    r59335 r59359  
    758758
    759759        $this->theme_json    = WP_Theme_JSON_Schema::migrate( $theme_json, $origin );
    760         $valid_block_names   = array_keys( static::get_blocks_metadata() );
     760        $blocks_metadata     = static::get_blocks_metadata();
     761        $valid_block_names   = array_keys( $blocks_metadata );
    761762        $valid_element_names = array_keys( static::ELEMENTS );
    762         $valid_variations    = static::get_valid_block_style_variations();
     763        $valid_variations    = static::get_valid_block_style_variations( $blocks_metadata );
    763764        $this->theme_json    = static::unwrap_shared_block_style_variations( $this->theme_json, $valid_variations );
    764765        $this->theme_json    = static::sanitize( $this->theme_json, $valid_block_names, $valid_element_names, $valid_variations );
     
    34833484        $theme_json = WP_Theme_JSON_Schema::migrate( $theme_json, $origin );
    34843485
    3485         $valid_block_names   = array_keys( static::get_blocks_metadata() );
     3486        $blocks_metadata     = static::get_blocks_metadata();
     3487        $valid_block_names   = array_keys( $blocks_metadata );
    34863488        $valid_element_names = array_keys( static::ELEMENTS );
    3487         $valid_variations    = static::get_valid_block_style_variations();
     3489        $valid_variations    = static::get_valid_block_style_variations( $blocks_metadata );
    34883490
    34893491        $theme_json = static::sanitize( $theme_json, $valid_block_names, $valid_element_names, $valid_variations );
     
    45324534     *
    45334535     * @since 6.6.0
    4534      *
     4536     * @since 6.8.0 Added the `$blocks_metadata` parameter.
     4537     *
     4538     * @param array $blocks_metadata Optional. List of metadata per block. Default is the metadata for all blocks.
    45354539     * @return array Valid block style variations by block type.
    45364540     */
    4537     protected static function get_valid_block_style_variations() {
     4541    protected static function get_valid_block_style_variations( $blocks_metadata = array() ) {
    45384542        $valid_variations = array();
    4539         foreach ( self::get_blocks_metadata() as $block_name => $block_meta ) {
     4543        $blocks_metadata  = empty( $blocks_metadata ) ? static::get_blocks_metadata() : $blocks_metadata;
     4544        foreach ( $blocks_metadata as $block_name => $block_meta ) {
    45404545            if ( ! isset( $block_meta['styleVariations'] ) ) {
    45414546                continue;
Note: See TracChangeset for help on using the changeset viewer.