diff --git a/wp-admin/includes/class-wp-upgrader.php b/wp-admin/includes/class-wp-upgrader.php index c70ef66bbb..f2db9ef97d 100644 --- a/wp-admin/includes/class-wp-upgrader.php +++ b/wp-admin/includes/class-wp-upgrader.php @@ -763,10 +763,7 @@ class Theme_Upgrader extends WP_Upgrader { return $this->result; // Force refresh of theme update information - delete_site_transient('update_themes'); - search_theme_directories( true ); - foreach ( wp_get_themes() as $theme ) - $theme->cache_delete(); + wp_clean_themes_cache(); return true; } @@ -812,10 +809,7 @@ class Theme_Upgrader extends WP_Upgrader { return $this->result; // Force refresh of theme update information - delete_site_transient('update_themes'); - search_theme_directories( true ); - foreach ( wp_get_themes() as $theme ) - $theme->cache_delete(); + wp_clean_themes_cache(); return true; } @@ -902,10 +896,7 @@ class Theme_Upgrader extends WP_Upgrader { remove_filter('upgrader_clear_destination', array(&$this, 'delete_old_theme'), 10, 4); // Force refresh of theme update information - delete_site_transient('update_themes'); - search_theme_directories( true ); - foreach ( wp_get_themes() as $theme ) - $theme->cache_delete(); + wp_clean_themes_cache(); return $results; } diff --git a/wp-includes/theme.php b/wp-includes/theme.php index db7b0a2c72..b2b7ba48ae 100644 --- a/wp-includes/theme.php +++ b/wp-includes/theme.php @@ -106,6 +106,18 @@ function wp_get_theme( $stylesheet = null, $theme_root = null ) { return new WP_Theme( $stylesheet, $theme_root ); } +/** + * Clears the cache held by get_theme_roots() and WP_Theme. + * + * @since 3.5.0 + */ +function wp_clean_themes_cache() { + delete_site_transient('update_themes'); + search_theme_directories( true ); + foreach ( wp_get_themes( array( 'errors' => null ) ) as $theme ) + $theme->cache_delete(); +} + /** * Whether a child theme is in use. *