Make WordPress Core


Ignore:
Timestamp:
02/28/2012 09:24:44 PM (13 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-admin/themes.php

    r19941 r20029  
    9797<?php endif; ?>
    9898</h2>
    99 
    100 <h3><?php _e('Current Theme'); ?></h3>
     99<?php $ct = wp_get_theme(); ?>
     100<h3><?php _e( 'Current Theme' ); ?></h3>
    101101<div id="current-theme">
    102 <?php if ( $ct->screenshot ) : ?>
    103 <img src="<?php echo $ct->theme_root_uri . '/' . $ct->stylesheet . '/' . $ct->screenshot; ?>" alt="<?php esc_attr_e('Current theme preview'); ?>" />
     102<?php if ( $ct->get_screenshot() ) : ?>
     103<img src="<?php echo $ct->get_screenshot( 'absolute' ); ?>" alt="<?php esc_attr_e( 'Current theme preview'); ?>" />
    104104<?php endif; ?>
    105105<h4><?php
    106106    /* translators: 1: theme title, 2: theme version, 3: theme author */
    107     printf(__('%1$s %2$s by %3$s'), $ct->title, $ct->version, $ct->author) ; ?></h4>
    108 <p class="theme-description"><?php echo $ct->description; ?></p>
     107    printf( __( '%1$s %2$s by %3$s' ), $ct->display('Name'), $ct->display('Version'), $ct->display('Author') ) ; ?></h4>
     108<p class="theme-description"><?php echo $ct->display('Description'); ?></p>
    109109<div class="theme-options">
    110110    <span><?php _e( 'Options:' )?></span>
     
    118118                continue;
    119119            // 0 = name, 1 = capability, 2 = file
    120             if ( ( strcmp($self, $item[2]) == 0 && empty($parent_file)) || ($parent_file && ($item[2] == $parent_file)) ) $class = ' class="current"';
    121 
     120            if ( ( strcmp($self, $item[2]) == 0 && empty($parent_file)) || ($parent_file && ($item[2] == $parent_file)) )
     121                $class = ' class="current"';
    122122            if ( !empty($submenu[$item[2]]) ) {
    123123                $submenu[$item[2]] = array_values($submenu[$item[2]]); // Re-index.
     
    138138    echo implode ( ' | ', $options );
    139139
    140     if ( $ct->tags ) : ?>
    141     <p><?php _e('Tags:'); ?> <?php echo join(', ', $ct->tags); ?></p>
     140    if ( $ct->get('Tags') ) : ?>
     141    <p><?php _e('Tags:'); ?> <?php echo $ct->display('Tags'); ?></p>
    142142    <?php endif; ?>
    143143</div>
     
    219219<?php
    220220// List broken themes, if any.
    221 $broken_themes = get_broken_themes();
    222 if ( current_user_can('edit_themes') && count( $broken_themes ) ) {
     221if ( current_user_can('edit_themes') && $broken_themes = wp_get_themes( array( 'errors' => true ) ) ) {
    223222?>
    224223
     
    232231    </tr>
    233232<?php
    234     $theme = '';
    235 
    236     $theme_names = array_keys($broken_themes);
    237     natcasesort($theme_names);
    238 
    239     foreach ($theme_names as $theme_name) {
    240         $name = $broken_themes[$theme_name]['Title'];
    241         $description = $broken_themes[$theme_name]['Description'];
    242 
    243         $theme = ('class="alternate"' == $theme) ? '' : 'class="alternate"';
     233    $alt = '';
     234    foreach ( $broken_themes as $broken_theme ) {
     235        $alt = ('class="alternate"' == $alt) ? '' : 'class="alternate"';
    244236        echo "
    245         <tr $theme>
    246              <td>$name</td>
    247              <td>$description</td>
     237        <tr $alt>
     238             <td>" . $broken_theme->get('Name') ."</td>
     239             <td>" . $broken_theme->errors()->get_error_message() . "</td>
    248240        </tr>";
    249241    }
Note: See TracChangeset for help on using the changeset viewer.