diff --git a/src/wp-includes/global-styles-and-settings.php b/src/wp-includes/global-styles-and-settings.php index 5836bf15fadcc..8195aaaa34b2a 100644 --- a/src/wp-includes/global-styles-and-settings.php +++ b/src/wp-includes/global-styles-and-settings.php @@ -233,17 +233,17 @@ 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. - $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(); + /* + * 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; + $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; } @@ -260,8 +260,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; @@ -367,6 +366,7 @@ 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_cache_delete( 'wp_get_global_settings_custom', 'theme_json' ); wp_cache_delete( 'wp_get_global_settings_theme', 'theme_json' ); WP_Theme_JSON_Resolver::clean_cached_data(); diff --git a/tests/phpunit/tests/theme/wpGetGlobalStylesSvgFilters.php b/tests/phpunit/tests/theme/wpGetGlobalStylesSvgFilters.php new file mode 100644 index 0000000000000..b1d23efb4d34e --- /dev/null +++ b/tests/phpunit/tests/theme/wpGetGlobalStylesSvgFilters.php @@ -0,0 +1,37 @@ +assertStringContainsString( 'assertStringContainsString( 'assertNotSame( $svg_for_default_theme, $svg_for_block_theme, 'Cache value should have changed' ); + } +}