From dce8dcc7c6ef666c79ac3860962a5550640ffbe0 Mon Sep 17 00:00:00 2001 From: Jonny Harris Date: Fri, 27 Jan 2023 14:53:18 +0000 Subject: [PATCH 1/5] Change object caching over transient api. --- src/wp-includes/global-styles-and-settings.php | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/wp-includes/global-styles-and-settings.php b/src/wp-includes/global-styles-and-settings.php index a814b5fe3b7c8..6df1708ce0eba 100644 --- a/src/wp-includes/global-styles-and-settings.php +++ b/src/wp-includes/global-styles-and-settings.php @@ -185,15 +185,11 @@ function wp_get_global_stylesheet( $types = array() ) { function wp_get_global_styles_svg_filters() { // Return cached value if it can be used and exists. // It's cached by theme to make sure that theme switching clears the cache. - $can_use_cached = ( - ( ! defined( 'WP_DEBUG' ) || ! WP_DEBUG ) && - ( ! defined( 'SCRIPT_DEBUG' ) || ! SCRIPT_DEBUG ) && - ( ! defined( 'REST_REQUEST' ) || ! REST_REQUEST ) && - ! is_admin() - ); - $transient_name = 'global_styles_svg_filters_' . get_stylesheet(); + $can_use_cached = ! WP_DEBUG && ! is_admin(); + $cache_group = 'theme_json'; + $cache_key = 'wp_get_global_styles_svg_filters'; if ( $can_use_cached ) { - $cached = get_transient( $transient_name ); + $cached = wp_cache_get( $cache_key, $cache_group ); if ( $cached ) { return $cached; } @@ -210,8 +206,7 @@ function wp_get_global_styles_svg_filters() { $svgs = $tree->get_svg_filters( $origins ); if ( $can_use_cached ) { - // Cache for a minute, same as wp_get_global_stylesheet. - set_transient( $transient_name, $svgs, MINUTE_IN_SECONDS ); + wp_cache_set( $cache_key, $svgs, $cache_group ); } return $svgs; @@ -317,5 +312,6 @@ function wp_theme_has_theme_json() { */ function wp_clean_theme_json_cache() { wp_cache_delete( 'wp_get_global_stylesheet', 'theme_json' ); + wp_cache_delete( 'wp_get_global_styles_svg_filters', 'theme_json' ); WP_Theme_JSON_Resolver::clean_cached_data(); } From 117e55d6e362c11208fe945520d5a6d4768de47c Mon Sep 17 00:00:00 2001 From: Jonny Harris Date: Mon, 30 Jan 2023 11:46:32 +0000 Subject: [PATCH 2/5] Update comment based on feedback. --- src/wp-includes/global-styles-and-settings.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/wp-includes/global-styles-and-settings.php b/src/wp-includes/global-styles-and-settings.php index 5e50dc9e91fe1..903a5a25cf208 100644 --- a/src/wp-includes/global-styles-and-settings.php +++ b/src/wp-includes/global-styles-and-settings.php @@ -233,8 +233,12 @@ function wp_get_global_stylesheet( $types = array() ) { * @return string */ function wp_get_global_styles_svg_filters() { - // Return cached value if it can be used and exists. - // It's cached by theme to make sure that theme switching clears the cache. + /* + * Ignore cache when `WP_DEBUG` is enabled, so it doesn't interfere with the theme + * developer's workflow. + * + * @todo Replace `WP_DEBUG` once an "in development mode" check is available in Core. + */ $can_use_cached = ! WP_DEBUG && ! is_admin(); $cache_group = 'theme_json'; $cache_key = 'wp_get_global_styles_svg_filters'; From ae4cbeeb17ab4200a72803dea4d6b46e946fa61c Mon Sep 17 00:00:00 2001 From: Jonny Harris Date: Mon, 30 Jan 2023 11:49:00 +0000 Subject: [PATCH 3/5] Remove is_admin --- src/wp-includes/global-styles-and-settings.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wp-includes/global-styles-and-settings.php b/src/wp-includes/global-styles-and-settings.php index 903a5a25cf208..8195aaaa34b2a 100644 --- a/src/wp-includes/global-styles-and-settings.php +++ b/src/wp-includes/global-styles-and-settings.php @@ -239,7 +239,7 @@ function wp_get_global_styles_svg_filters() { * * @todo Replace `WP_DEBUG` once an "in development mode" check is available in Core. */ - $can_use_cached = ! WP_DEBUG && ! is_admin(); + $can_use_cached = ! WP_DEBUG; $cache_group = 'theme_json'; $cache_key = 'wp_get_global_styles_svg_filters'; if ( $can_use_cached ) { From 6a02b20701b95f77ca706ddac449dbac61930f90 Mon Sep 17 00:00:00 2001 From: Jonny Harris Date: Mon, 30 Jan 2023 18:24:11 +0000 Subject: [PATCH 4/5] Add a unit test. --- .../theme/wpGetGlobalStylesSvgFilters.php | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 tests/phpunit/tests/theme/wpGetGlobalStylesSvgFilters.php diff --git a/tests/phpunit/tests/theme/wpGetGlobalStylesSvgFilters.php b/tests/phpunit/tests/theme/wpGetGlobalStylesSvgFilters.php new file mode 100644 index 0000000000000..0825f0c76ae25 --- /dev/null +++ b/tests/phpunit/tests/theme/wpGetGlobalStylesSvgFilters.php @@ -0,0 +1,38 @@ +assertStringContainsString( 'assertStringContainsString( 'assertNotSame( $svg_for_default_theme, $svg_for_block_theme, 'Cache value should have changed' ); + } +} From 7bcd1cd0e1f0eeb38b699a2979c5f658a160a209 Mon Sep 17 00:00:00 2001 From: Felix Arntz Date: Wed, 1 Feb 2023 14:41:16 -0800 Subject: [PATCH 5/5] Update ticket reference. --- tests/phpunit/tests/theme/wpGetGlobalStylesSvgFilters.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/phpunit/tests/theme/wpGetGlobalStylesSvgFilters.php b/tests/phpunit/tests/theme/wpGetGlobalStylesSvgFilters.php index 0825f0c76ae25..b1d23efb4d34e 100644 --- a/tests/phpunit/tests/theme/wpGetGlobalStylesSvgFilters.php +++ b/tests/phpunit/tests/theme/wpGetGlobalStylesSvgFilters.php @@ -1,5 +1,4 @@