Make WordPress Core


Ignore:
Timestamp:
02/21/2024 07:24:12 PM (13 months ago)
Author:
joemcgill
Message:

Themes: Use original template paths when switching blogs.

This fixes a bug introduced by [57129] and [56635] in which deprecating the previous TEMPLATEPATH and STYLESHEETPATH constants in favor of get_template_directory() and get_stylesheet_directory() functions caused the active theme template path to change when using switch_to_blog().

This introduces a new function, wp_set_template_globals(), which is called during the bootstrap process to store the template paths to new globals values $wp_template_path and $wp_stylesheet_path. This restores behavior to how things worked prior to [56635] but retains the ability for template values to be reset for better testability.

Related #18298, #60025.

Props joemcgill, flixos90, mukesh27, swissspidy, manfcarlo, metropolis_john, jeremyfelt.
Fixes #60290.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/load.php

    r57608 r57685  
    10471047 * @access private
    10481048 *
    1049  * @global string $pagenow The filename of the current screen.
     1049 * @global string $pagenow            The filename of the current screen.
     1050 * @global string $wp_stylesheet_path Path to current theme's stylesheet directory.
     1051 * @global string $wp_template_path   Path to current theme's template directory.
    10501052 *
    10511053 * @return string[] Array of absolute paths to theme directories.
    10521054 */
    10531055function wp_get_active_and_valid_themes() {
    1054     global $pagenow;
     1056    global $pagenow, $wp_stylesheet_path, $wp_template_path;
    10551057
    10561058    $themes = array();
     
    10601062    }
    10611063
    1062     $stylesheet_path = get_stylesheet_directory();
    1063     $template_path   = get_template_directory();
    1064 
    1065     if ( $template_path !== $stylesheet_path ) {
    1066         $themes[] = $stylesheet_path;
    1067     }
    1068 
    1069     $themes[] = $template_path;
     1064    if ( is_child_theme() ) {
     1065        $themes[] = $wp_stylesheet_path;
     1066    }
     1067
     1068    $themes[] = $wp_template_path;
    10701069
    10711070    /*
Note: See TracChangeset for help on using the changeset viewer.