Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove memoization #5644

Closed
Closed
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 4 additions & 12 deletions src/wp-includes/ms-blogs.php
Original file line number Diff line number Diff line change
Expand Up @@ -491,8 +491,6 @@ 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.
Expand Down Expand Up @@ -534,10 +532,8 @@ 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['wp_template_path'] = null;
$GLOBALS['wp_stylesheet_path'] = null;
$GLOBALS['table_prefix'] = $wpdb->get_blog_prefix();
$GLOBALS['blog_id'] = $new_blog_id;

if ( function_exists( 'wp_cache_switch_to_blog' ) ) {
wp_cache_switch_to_blog( $new_blog_id );
Expand Down Expand Up @@ -604,8 +600,6 @@ 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.
Expand All @@ -631,10 +625,8 @@ 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['wp_template_path'] = null;
$GLOBALS['wp_stylesheet_path'] = null;
$GLOBALS['blog_id'] = $new_blog_id;
$GLOBALS['table_prefix'] = $wpdb->get_blog_prefix();

if ( function_exists( 'wp_cache_switch_to_blog' ) ) {
wp_cache_switch_to_blog( $new_blog_id );
Expand Down
93 changes: 29 additions & 64 deletions src/wp-includes/theme.php
Original file line number Diff line number Diff line change
Expand Up @@ -188,39 +188,27 @@ function get_stylesheet() {
*
* @since 1.5.0
* @since 6.4.0 Memoizes filter execution so that it only runs once for the current theme.
* @since 6.4.1 Memoization removed.
joemcgill marked this conversation as resolved.
Show resolved Hide resolved
*
* @global string $wp_stylesheet_path Current theme stylesheet directory path.
*
joemcgill marked this conversation as resolved.
Show resolved Hide resolved
* @return string Path to active theme's stylesheet directory.
*/
function get_stylesheet_directory() {
global $wp_stylesheet_path;
$stylesheet = get_stylesheet();
$theme_root = get_theme_root( $stylesheet );
$stylesheet_dir = "$theme_root/$stylesheet";

if ( null === $wp_stylesheet_path ) {
$stylesheet = get_stylesheet();
$theme_root = get_theme_root( $stylesheet );
$stylesheet_dir = "$theme_root/$stylesheet";

/**
* Filters the stylesheet directory path for the active theme.
*
* @since 1.5.0
*
* @param string $stylesheet_dir Absolute path to the active theme.
* @param string $stylesheet Directory name of the active theme.
* @param string $theme_root Absolute path to themes directory.
*/
$stylesheet_dir = apply_filters( 'stylesheet_directory', $stylesheet_dir, $stylesheet, $theme_root );

// If there are filter callbacks, force the logic to execute on every call.
if ( has_filter( 'stylesheet' ) || has_filter( 'theme_root' ) || has_filter( 'stylesheet_directory' ) ) {
return $stylesheet_dir;
}

$wp_stylesheet_path = $stylesheet_dir;
}

return $wp_stylesheet_path;
/**
* Filters the stylesheet directory path for the active theme.
*
* @since 1.5.0
*
* @param string $stylesheet_dir Absolute path to the active theme.
* @param string $stylesheet Directory name of the active theme.
* @param string $theme_root Absolute path to themes directory.
*/
return apply_filters( 'stylesheet_directory', $stylesheet_dir, $stylesheet, $theme_root );
}

/**
Expand Down Expand Up @@ -338,39 +326,25 @@ function get_template() {
*
* @since 1.5.0
* @since 6.4.0 Memoizes filter execution so that it only runs once for the current theme.
*
* @global string $wp_template_path Current theme template directory path.
* @since 6.4.1 Memoization removed.
*
* @return string Path to active theme's template directory.
*/
function get_template_directory() {
global $wp_template_path;

if ( null === $wp_template_path ) {
$template = get_template();
$theme_root = get_theme_root( $template );
$template_dir = "$theme_root/$template";
$template = get_template();
$theme_root = get_theme_root( $template );
$template_dir = "$theme_root/$template";

/**
* Filters the active theme directory path.
*
* @since 1.5.0
*
* @param string $template_dir The path of the active theme directory.
* @param string $template Directory name of the active theme.
* @param string $theme_root Absolute path to the themes directory.
*/
$template_dir = apply_filters( 'template_directory', $template_dir, $template, $theme_root );

// If there are filter callbacks, force the logic to execute on every call.
if ( has_filter( 'template' ) || has_filter( 'theme_root' ) || has_filter( 'template_directory' ) ) {
return $template_dir;
}

$wp_template_path = $template_dir;
}

return $wp_template_path;
/**
* Filters the active theme directory path.
*
* @since 1.5.0
*
* @param string $template_dir The path of the active theme directory.
* @param string $template Directory name of the active theme.
* @param string $theme_root Absolute path to the themes directory.
*/
return apply_filters( 'template_directory', $template_dir, $template, $theme_root );
}

/**
Expand Down Expand Up @@ -776,13 +750,11 @@ function locale_stylesheet() {
* @global WP_Customize_Manager $wp_customize
* @global array $sidebars_widgets
* @global array $wp_registered_sidebars
* @global string $wp_stylesheet_path
* @global string $wp_template_path
*
* @param string $stylesheet Stylesheet name.
*/
function switch_theme( $stylesheet ) {
global $wp_theme_directories, $wp_customize, $sidebars_widgets, $wp_registered_sidebars, $wp_stylesheet_path, $wp_template_path;
global $wp_theme_directories, $wp_customize, $sidebars_widgets, $wp_registered_sidebars;

$requirements = validate_theme_requirements( $stylesheet );
if ( is_wp_error( $requirements ) ) {
Expand Down Expand Up @@ -866,13 +838,6 @@ function switch_theme( $stylesheet ) {

update_option( 'theme_switched', $old_theme->get_stylesheet() );

/*
* Reset globals to force refresh the next time these directories are
* accessed via `get_stylesheet_directory()` / `get_template_directory()`.
*/
$wp_stylesheet_path = null;
$wp_template_path = null;

// Clear pattern caches.
$new_theme->delete_pattern_cache();
$old_theme->delete_pattern_cache();
Expand Down
Loading