Make WordPress Core


Ignore:
Timestamp:
01/26/2023 06:37:47 PM (4 years ago)
Author:
flixos90
Message:

Themes: Avoid unnecessary database queries from get_default_block_editor_settings() in WP_Theme_JSON_Resolver::get_theme_data().

The get_default_block_editor_settings() function included several pieces of data that are irrelevant for the purpose that WP_Theme_JSON_Resolver was calling it for, yet resulted in three database queries on page load that can be avoided.

This changeset introduces a new function get_classic_theme_supports_block_editor_settings() to takes responsibility of only the data needed in WP_Theme_JSON_Resolver, which now uses that function. This leads to a reduction of database queries and accordingly a performance improvement.

Props mamaduka, spacedmonkey, oandregal, flixos90, audrasjb, mukesh27.
Fixes #57547.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/blocks/editor.php

    r54891 r55146  
    570570
    571571        /**
     572         * @ticket 57547
     573         *
     574         * @covers ::get_classic_theme_supports_block_editor_settings
     575         */
     576        public function test_get_classic_theme_supports_block_editor_settings() {
     577                $font_sizes = array(
     578                        array(
     579                                'name' => 'Small',
     580                                'size' => 12,
     581                                'slug' => 'small',
     582                        ),
     583                        array(
     584                                'name' => 'Regular',
     585                                'size' => 16,
     586                                'slug' => 'regular',
     587                        ),
     588                );
     589
     590                add_theme_support( 'editor-font-sizes', $font_sizes );
     591                $settings = get_classic_theme_supports_block_editor_settings();
     592                remove_theme_support( 'editor-font-sizes' );
     593
     594                $this->assertFalse( $settings['disableCustomColors'], 'Value for array key "disableCustomColors" does not match expectations' );
     595                $this->assertFalse( $settings['disableCustomFontSizes'], 'Value for array key "disableCustomFontSizes" does not match expectations' );
     596                $this->assertFalse( $settings['disableCustomGradients'], 'Value for array key "disableCustomGradients" does not match expectations' );
     597                $this->assertFalse( $settings['disableLayoutStyles'], 'Value for array key "disableLayoutStyles" does not match expectations' );
     598                $this->assertFalse( $settings['enableCustomLineHeight'], 'Value for array key "enableCustomLineHeight" does not match expectations' );
     599                $this->assertFalse( $settings['enableCustomSpacing'], 'Value for array key "enableCustomSpacing" does not match expectations' );
     600                $this->assertFalse( $settings['enableCustomUnits'], 'Value for array key "enableCustomUnits" does not match expectations' );
     601
     602                $this->assertSame(
     603                        $font_sizes,
     604                        $settings['fontSizes'],
     605                        'Value for array key "fontSizes" does not match expectations'
     606                );
     607        }
     608
     609        /**
    572610         * Data provider.
    573611         *
Note: See TracChangeset for help on using the changeset viewer.