Make WordPress Core


Ignore:
Timestamp:
02/28/2012 09:24:44 PM (12 years ago)
Author:
nacin
Message:

Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.

  • Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
  • Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
  • Error Handling: Broken themes have a WP_Error object attached to them.
  • Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
  • Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
  • i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
  • PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.

Functions deprecated:

  • get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
  • get_theme() and current_theme_info() -- use wp_get_theme()
  • get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
  • wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()

see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.

see #20103.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/update.php

    r20000 r20029  
    236236        return false;
    237237
    238     if ( !function_exists( 'get_themes' ) )
    239         require_once( ABSPATH . 'wp-includes/theme.php' );
    240 
    241     $installed_themes = get_themes( );
     238    $installed_themes = wp_get_themes();
    242239    $last_update = get_site_transient( 'update_themes' );
    243240    if ( ! is_object($last_update) )
     
    246243    $themes = array();
    247244    $checked = array();
    248     $exclude_fields = array('Template Files', 'Stylesheet Files', 'Status', 'Theme Root', 'Theme Root URI', 'Template Dir', 'Stylesheet Dir', 'Description', 'Tags', 'Screenshot');
    249245
    250246    // Put slug of current theme into request.
    251247    $themes['current_theme'] = get_option( 'stylesheet' );
    252248
    253     foreach ( (array) $installed_themes as $theme_title => $theme ) {
    254         $themes[$theme['Stylesheet']] = array();
    255         $checked[$theme['Stylesheet']] = $theme['Version'];
    256 
    257         $themes[$theme['Stylesheet']]['Name'] = $theme['Name'];
    258         $themes[$theme['Stylesheet']]['Version'] = $theme['Version'];
    259 
    260         foreach ( (array) $theme as $key => $value ) {
    261             if ( !in_array($key, $exclude_fields) )
    262                 $themes[$theme['Stylesheet']][$key] = $value;
    263         }
     249    foreach ( $installed_themes as $theme ) {
     250        $checked[ $theme->get_stylesheet() ] = $theme->get('Version');
     251
     252        $themes[ $theme->get_stylesheet() ] = array(
     253            'Name'       => $theme->get('Name'),
     254            'Title'      => $theme->get('Name'),
     255            'Version'    => $theme->get('Version'),
     256            'Author'     => $theme->get('Author'),
     257            'Author URI' => $theme->get('AuthorURI'),
     258            'Template'   => $theme->get_template(),
     259            'Stylesheet' => $theme->get_stylesheet(),
     260        );
    264261    }
    265262
Note: See TracChangeset for help on using the changeset viewer.