diff --git a/src/wp-includes/class-wp-theme.php b/src/wp-includes/class-wp-theme.php index a664a1ea0bee0..e6eeb8ca5dfaf 100644 --- a/src/wp-includes/class-wp-theme.php +++ b/src/wp-includes/class-wp-theme.php @@ -1974,7 +1974,7 @@ private function get_pattern_cache() { if ( ! $this->exists() ) { return false; } - $pattern_data = wp_cache_get( 'wp_theme_patterns_' . $this->stylesheet ); + $pattern_data = wp_cache_get( 'wp_theme_patterns_' . $this->stylesheet, 'theme_files' ); if ( is_array( $pattern_data ) && $pattern_data['version'] === $this->get( 'Version' ) ) { return $pattern_data['patterns']; } @@ -1993,7 +1993,7 @@ private function set_pattern_cache( array $patterns ) { 'version' => $this->get( 'Version' ), 'patterns' => $patterns, ); - wp_cache_set( 'wp_theme_patterns_' . $this->stylesheet, $pattern_data ); + wp_cache_set( 'wp_theme_patterns_' . $this->stylesheet, $pattern_data, 'theme_files' ); } /** @@ -2002,7 +2002,7 @@ private function set_pattern_cache( array $patterns ) { * @since 6.4.0 */ public function delete_pattern_cache() { - wp_cache_delete( 'wp_theme_patterns_' . $this->stylesheet ); + wp_cache_delete( 'wp_theme_patterns_' . $this->stylesheet, 'theme_files' ); } /** diff --git a/src/wp-includes/load.php b/src/wp-includes/load.php index c1885987687d5..d10aff376fd57 100644 --- a/src/wp-includes/load.php +++ b/src/wp-includes/load.php @@ -875,6 +875,7 @@ function wp_start_object_cache() { 'site-options', 'site-queries', 'site-transient', + 'theme_files', 'rss', 'users', 'user-queries', diff --git a/src/wp-includes/ms-blogs.php b/src/wp-includes/ms-blogs.php index 4a251cf300c1b..b9575b3beff70 100644 --- a/src/wp-includes/ms-blogs.php +++ b/src/wp-includes/ms-blogs.php @@ -565,6 +565,7 @@ function switch_to_blog( $new_blog_id, $deprecated = null ) { 'site-options', 'site-queries', 'site-transient', + 'theme_files', 'rss', 'users', 'user-queries', @@ -658,6 +659,7 @@ function restore_current_blog() { 'site-options', 'site-queries', 'site-transient', + 'theme_files', 'rss', 'users', 'user-queries', diff --git a/src/wp-includes/theme.php b/src/wp-includes/theme.php index 0b0df6c7b06f0..c8cbc60cc6ce5 100644 --- a/src/wp-includes/theme.php +++ b/src/wp-includes/theme.php @@ -837,8 +837,10 @@ function switch_theme( $stylesheet ) { update_option( 'theme_switched', $old_theme->get_stylesheet() ); // Clear pattern caches. - $new_theme->delete_pattern_cache(); - $old_theme->delete_pattern_cache(); + if ( ! is_multisite() ) { + $new_theme->delete_pattern_cache(); + $old_theme->delete_pattern_cache(); + } // Set autoload=no for the old theme, autoload=yes for the switched theme. $theme_mods_options = array( diff --git a/tests/phpunit/includes/abstract-testcase.php b/tests/phpunit/includes/abstract-testcase.php index 3600722f4448d..f5a80cf29b308 100644 --- a/tests/phpunit/includes/abstract-testcase.php +++ b/tests/phpunit/includes/abstract-testcase.php @@ -412,6 +412,7 @@ public static function flush_cache() { 'site-options', 'site-queries', 'site-transient', + 'theme_files', 'rss', 'users', 'user-queries', diff --git a/tests/phpunit/tests/theme/wpThemeGetBlockPatterns.php b/tests/phpunit/tests/theme/wpThemeGetBlockPatterns.php index caaf189a16a04..45b4083262932 100644 --- a/tests/phpunit/tests/theme/wpThemeGetBlockPatterns.php +++ b/tests/phpunit/tests/theme/wpThemeGetBlockPatterns.php @@ -86,6 +86,7 @@ public function test_delete_pattern_cache() { /** * @ticket 59490 + * @group ms-excluded */ public function test_should_clear_cache_after_switching_theme() { switch_theme( 'block-theme' );