From bbe67a01472b10a83181b126d5edadf4f6caff0c Mon Sep 17 00:00:00 2001 From: Felix Arntz Date: Thu, 19 Oct 2023 19:09:21 +0000 Subject: [PATCH] Multisite: Ensure that switching sites resets the current theme directory globals. The globals introduced in [56635] to cache the current theme directories in memory were not considering switching sites in a multisite network. This changeset addresses the bug including test coverage. Props codex-m, jeremyfelt. Fixes #59677. See #18298. Built from https://develop.svn.wordpress.org/trunk@56974 git-svn-id: http://core.svn.wordpress.org/trunk@56485 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/ms-blogs.php | 16 ++++++++++++---- wp-includes/version.php | 2 +- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/wp-includes/ms-blogs.php b/wp-includes/ms-blogs.php index eddb99c605..7e91e11b85 100644 --- a/wp-includes/ms-blogs.php +++ b/wp-includes/ms-blogs.php @@ -491,6 +491,8 @@ function update_blog_option( $id, $option, $value, $deprecated = null ) { * @global array $_wp_switched_stack * @global bool $switched * @global string $table_prefix + * @global string $wp_template_path + * @global string $wp_stylesheet_path * @global WP_Object_Cache $wp_object_cache * * @param int $new_blog_id The ID of the blog to switch to. Default: current blog. @@ -532,8 +534,10 @@ function switch_to_blog( $new_blog_id, $deprecated = null ) { } $wpdb->set_blog_id( $new_blog_id ); - $GLOBALS['table_prefix'] = $wpdb->get_blog_prefix(); - $GLOBALS['blog_id'] = $new_blog_id; + $GLOBALS['table_prefix'] = $wpdb->get_blog_prefix(); + $GLOBALS['blog_id'] = $new_blog_id; + $GLOBALS['wp_template_path'] = null; + $GLOBALS['wp_stylesheet_path'] = null; if ( function_exists( 'wp_cache_switch_to_blog' ) ) { wp_cache_switch_to_blog( $new_blog_id ); @@ -600,6 +604,8 @@ function switch_to_blog( $new_blog_id, $deprecated = null ) { * @global int $blog_id * @global bool $switched * @global string $table_prefix + * @global string $wp_template_path + * @global string $wp_stylesheet_path * @global WP_Object_Cache $wp_object_cache * * @return bool True on success, false if we're already on the current blog. @@ -625,8 +631,10 @@ function restore_current_blog() { } $wpdb->set_blog_id( $new_blog_id ); - $GLOBALS['blog_id'] = $new_blog_id; - $GLOBALS['table_prefix'] = $wpdb->get_blog_prefix(); + $GLOBALS['blog_id'] = $new_blog_id; + $GLOBALS['table_prefix'] = $wpdb->get_blog_prefix(); + $GLOBALS['wp_template_path'] = null; + $GLOBALS['wp_stylesheet_path'] = null; if ( function_exists( 'wp_cache_switch_to_blog' ) ) { wp_cache_switch_to_blog( $new_blog_id ); diff --git a/wp-includes/version.php b/wp-includes/version.php index c7ce777357..e8c551cdaf 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -16,7 +16,7 @@ * * @global string $wp_version */ -$wp_version = '6.5-alpha-56973'; +$wp_version = '6.5-alpha-56974'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.