Register the default theme dir in wp-settings.php so that it is registered even when get_themes() doesn't run. Fix counting of theme dirs. Add option to get_raw_theme_root() to disregard the current theme root cache. see #14911
git-svn-id: http://svn.automattic.com/wordpress/trunk@16424 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
a0e5b38765
commit
a6cdc2dea4
|
@ -267,9 +267,6 @@ function get_themes() {
|
||||||
if ( isset($wp_themes) )
|
if ( isset($wp_themes) )
|
||||||
return $wp_themes;
|
return $wp_themes;
|
||||||
|
|
||||||
/* Register the default root as a theme directory */
|
|
||||||
register_theme_directory( get_theme_root() );
|
|
||||||
|
|
||||||
if ( !$theme_files = search_theme_directories() )
|
if ( !$theme_files = search_theme_directories() )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -475,7 +472,7 @@ function get_themes() {
|
||||||
function get_theme_roots() {
|
function get_theme_roots() {
|
||||||
global $wp_theme_directories;
|
global $wp_theme_directories;
|
||||||
|
|
||||||
if ( count($wp_theme_directories <= 1) )
|
if ( count($wp_theme_directories) <= 1 )
|
||||||
return '/themes';
|
return '/themes';
|
||||||
|
|
||||||
$theme_roots = get_site_transient( 'theme_roots' );
|
$theme_roots = get_site_transient( 'theme_roots' );
|
||||||
|
@ -703,19 +700,21 @@ function get_theme_root_uri( $stylesheet_or_template = false ) {
|
||||||
* @param string $stylesheet_or_template The stylesheet or template name of the theme
|
* @param string $stylesheet_or_template The stylesheet or template name of the theme
|
||||||
* @return string Theme root
|
* @return string Theme root
|
||||||
*/
|
*/
|
||||||
function get_raw_theme_root( $stylesheet_or_template ) {
|
function get_raw_theme_root( $stylesheet_or_template, $no_cache = false ) {
|
||||||
global $wp_theme_directories;
|
global $wp_theme_directories;
|
||||||
|
|
||||||
if ( count($wp_theme_directories <= 1) )
|
if ( count($wp_theme_directories) <= 1 )
|
||||||
return '/themes';
|
return '/themes';
|
||||||
|
|
||||||
$theme_root = false;
|
$theme_root = false;
|
||||||
|
|
||||||
// If requesting the root for the current theme, consult options to avoid calling get_theme_roots()
|
// If requesting the root for the current theme, consult options to avoid calling get_theme_roots()
|
||||||
if ( get_option('stylesheet') == $stylesheet_or_template )
|
if ( !$no_cache ) {
|
||||||
$theme_root = get_option('stylesheet_root');
|
if ( get_option('stylesheet') == $stylesheet_or_template )
|
||||||
elseif ( get_option('template') == $stylesheet_or_template )
|
$theme_root = get_option('stylesheet_root');
|
||||||
$theme_root = get_option('template_root');
|
elseif ( get_option('template') == $stylesheet_or_template )
|
||||||
|
$theme_root = get_option('template_root');
|
||||||
|
}
|
||||||
|
|
||||||
if ( empty($theme_root) ) {
|
if ( empty($theme_root) ) {
|
||||||
$theme_roots = get_theme_roots();
|
$theme_roots = get_theme_roots();
|
||||||
|
@ -1248,8 +1247,8 @@ function switch_theme($template, $stylesheet) {
|
||||||
update_option('template', $template);
|
update_option('template', $template);
|
||||||
update_option('stylesheet', $stylesheet);
|
update_option('stylesheet', $stylesheet);
|
||||||
if ( count($wp_theme_directories) > 1 ) {
|
if ( count($wp_theme_directories) > 1 ) {
|
||||||
update_option('template_root', get_raw_theme_root($template));
|
update_option('template_root', get_raw_theme_root($template, true));
|
||||||
update_option('stylesheet_root', get_raw_theme_root($stylesheet));
|
update_option('stylesheet_root', get_raw_theme_root($stylesheet, true));
|
||||||
}
|
}
|
||||||
delete_option('current_theme');
|
delete_option('current_theme');
|
||||||
$theme = get_current_theme();
|
$theme = get_current_theme();
|
||||||
|
|
|
@ -174,6 +174,9 @@ require( ABSPATH . WPINC . '/vars.php' );
|
||||||
create_initial_taxonomies();
|
create_initial_taxonomies();
|
||||||
create_initial_post_types();
|
create_initial_post_types();
|
||||||
|
|
||||||
|
// Register the default theme directory root
|
||||||
|
register_theme_directory( get_theme_root() );
|
||||||
|
|
||||||
// Load active plugins.
|
// Load active plugins.
|
||||||
foreach ( wp_get_active_and_valid_plugins() as $plugin )
|
foreach ( wp_get_active_and_valid_plugins() as $plugin )
|
||||||
include_once( $plugin );
|
include_once( $plugin );
|
||||||
|
|
Loading…
Reference in New Issue