From cbb418fbe24ec387fd43e4321fdc164f7a83cc65 Mon Sep 17 00:00:00 2001 From: Felix Arntz Date: Thu, 26 Jan 2023 18:39:13 +0000 Subject: [PATCH] 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. Built from https://develop.svn.wordpress.org/trunk@55146 git-svn-id: http://core.svn.wordpress.org/trunk@54679 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/block-editor.php | 61 +++++++++++++------- wp-includes/class-wp-theme-json-resolver.php | 2 +- wp-includes/version.php | 2 +- 3 files changed, 42 insertions(+), 23 deletions(-) diff --git a/wp-includes/block-editor.php b/wp-includes/block-editor.php index 4227c674c0..1a5e8f6e2d 100644 --- a/wp-includes/block-editor.php +++ b/wp-includes/block-editor.php @@ -216,13 +216,6 @@ function get_default_block_editor_settings() { 'allowedMimeTypes' => get_allowed_mime_types(), 'defaultEditorStyles' => $default_editor_styles, 'blockCategories' => get_default_block_categories(), - 'disableCustomColors' => get_theme_support( 'disable-custom-colors' ), - 'disableCustomFontSizes' => get_theme_support( 'disable-custom-font-sizes' ), - 'disableCustomGradients' => get_theme_support( 'disable-custom-gradients' ), - 'disableLayoutStyles' => get_theme_support( 'disable-layout-styles' ), - 'enableCustomLineHeight' => get_theme_support( 'custom-line-height' ), - 'enableCustomSpacing' => get_theme_support( 'custom-spacing' ), - 'enableCustomUnits' => get_theme_support( 'custom-units' ), 'isRTL' => is_rtl(), 'imageDefaultSize' => $image_default_size, 'imageDimensions' => $image_dimensions, @@ -233,20 +226,9 @@ function get_default_block_editor_settings() { '__unstableGalleryWithImageBlocks' => true, ); - // Theme settings. - $color_palette = current( (array) get_theme_support( 'editor-color-palette' ) ); - if ( false !== $color_palette ) { - $editor_settings['colors'] = $color_palette; - } - - $font_sizes = current( (array) get_theme_support( 'editor-font-sizes' ) ); - if ( false !== $font_sizes ) { - $editor_settings['fontSizes'] = $font_sizes; - } - - $gradient_presets = current( (array) get_theme_support( 'editor-gradient-presets' ) ); - if ( false !== $gradient_presets ) { - $editor_settings['gradients'] = $gradient_presets; + $theme_settings = get_classic_theme_supports_block_editor_settings(); + foreach ( $theme_settings as $key => $value ) { + $editor_settings[ $key ] = $value; } return $editor_settings; @@ -694,3 +676,40 @@ function get_block_editor_theme_styles() { return $styles; } + +/** + * Returns the classic theme supports settings for block editor. + * + * @since 6.2.0 + * + * @return array The classic theme supports settings. + */ +function get_classic_theme_supports_block_editor_settings() { + $theme_settings = array( + 'disableCustomColors' => get_theme_support( 'disable-custom-colors' ), + 'disableCustomFontSizes' => get_theme_support( 'disable-custom-font-sizes' ), + 'disableCustomGradients' => get_theme_support( 'disable-custom-gradients' ), + 'disableLayoutStyles' => get_theme_support( 'disable-layout-styles' ), + 'enableCustomLineHeight' => get_theme_support( 'custom-line-height' ), + 'enableCustomSpacing' => get_theme_support( 'custom-spacing' ), + 'enableCustomUnits' => get_theme_support( 'custom-units' ), + ); + + // Theme settings. + $color_palette = current( (array) get_theme_support( 'editor-color-palette' ) ); + if ( false !== $color_palette ) { + $theme_settings['colors'] = $color_palette; + } + + $font_sizes = current( (array) get_theme_support( 'editor-font-sizes' ) ); + if ( false !== $font_sizes ) { + $theme_settings['fontSizes'] = $font_sizes; + } + + $gradient_presets = current( (array) get_theme_support( 'editor-gradient-presets' ) ); + if ( false !== $gradient_presets ) { + $theme_settings['gradients'] = $gradient_presets; + } + + return $theme_settings; +} diff --git a/wp-includes/class-wp-theme-json-resolver.php b/wp-includes/class-wp-theme-json-resolver.php index 3ddddb1955..7b463681d6 100644 --- a/wp-includes/class-wp-theme-json-resolver.php +++ b/wp-includes/class-wp-theme-json-resolver.php @@ -286,7 +286,7 @@ class WP_Theme_JSON_Resolver { * So we take theme supports, transform it to theme.json shape * and merge the static::$theme upon that. */ - $theme_support_data = WP_Theme_JSON::get_from_editor_settings( get_default_block_editor_settings() ); + $theme_support_data = WP_Theme_JSON::get_from_editor_settings( get_classic_theme_supports_block_editor_settings() ); if ( ! wp_theme_has_theme_json() ) { if ( ! isset( $theme_support_data['settings']['color'] ) ) { $theme_support_data['settings']['color'] = array(); diff --git a/wp-includes/version.php b/wp-includes/version.php index df3ec07dd6..6b100e7379 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -16,7 +16,7 @@ * * @global string $wp_version */ -$wp_version = '6.2-alpha-55145'; +$wp_version = '6.2-alpha-55146'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.