WordPress.org

Make WordPress Core

Changeset 18455


Ignore:
Timestamp:
07/21/11 21:37:31 (3 years ago)
Author:
nacin
Message:

Use the Settings fields/sections API in Twenty Eleven. props chipbennett for initial patch. see #18045. for 3.3.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-content/themes/twentyeleven/inc/theme-options.php

    r18430 r18455  
    4747        'twentyeleven_theme_options_validate' // The sanitization callback, see twentyeleven_theme_options_validate() 
    4848    ); 
     49 
     50    // Register our settings field group 
     51    add_settings_section(  
     52        'general', // Unique identifier for the settings section 
     53        '', // Section title (we don't want one) 
     54        '__return_false', // Section callback (we don't want anything)  
     55        'theme_options' // Menu slug, used to uniquely identify the page; see twentyeleven_theme_options_add_page() 
     56    ); 
     57 
     58    // Register our individual settings fields 
     59    add_settings_field(  
     60        'color_scheme',  // Unique identifier for the field for this section 
     61        __( 'Color Scheme', 'twentyeleven' ), // Setting field label 
     62        'twentyeleven_settings_field_color_scheme', // Function that renders the settings field 
     63        'theme_options', // Menu slug, used to uniquely identify the page; see twentyeleven_theme_options_add_page() 
     64        'general' // Settings section. Same as the first argument in the add_settings_section() above 
     65    ); 
     66 
     67    add_settings_field( 'link_color', __( 'Link Color', 'twentyeleven' ), 'twentyeleven_settings_field_link_color', 'theme_options', 'general' ); 
     68    add_settings_field( 'layout',     __( 'Layout',     'twentyeleven' ), 'twentyeleven_settings_field_layout',     'theme_options', 'general' ); 
    4969} 
    5070add_action( 'admin_init', 'twentyeleven_theme_options_init' ); 
     
    203223 
    204224/** 
     225 * Renders the Color Scheme setting field. 
     226 *  
     227 * @since Twenty Eleven 1.2 
     228 */ 
     229function twentyeleven_settings_field_color_scheme() { 
     230    $options = twentyeleven_get_theme_options(); 
     231 
     232    foreach ( twentyeleven_color_schemes() as $scheme ) { 
     233    ?> 
     234    <div class="layout image-radio-option color-scheme"> 
     235    <label class="description"> 
     236        <input type="radio" name="twentyeleven_theme_options[color_scheme]" value="<?php echo esc_attr( $scheme['value'] ); ?>" <?php checked( $options['color_scheme'], $scheme['value'] ); ?> /> 
     237        <input type="hidden" id="default-color-<?php echo esc_attr( $scheme['value'] ); ?>" value="<?php echo esc_attr( $scheme['default_link_color'] ); ?>" /> 
     238        <span> 
     239            <img src="<?php echo esc_url( $scheme['thumbnail'] ); ?>" width="136" height="122" alt="" /> 
     240            <?php echo $scheme['label']; ?> 
     241        </span> 
     242    </label> 
     243    </div> 
     244    <?php 
     245    } 
     246} 
     247 
     248/** 
     249 * Renders the Link Color setting field. 
     250 *  
     251 * @since Twenty Eleven 1.2 
     252 */ 
     253function twentyeleven_settings_field_link_color() { 
     254    $options = twentyeleven_get_theme_options(); 
     255    ?> 
     256    <input type="text" name="twentyeleven_theme_options[link_color]" id="link-color" value="<?php echo esc_attr( $options['link_color'] ); ?>" /> 
     257    <a href="#" class="pickcolor hide-if-no-js" id="link-color-example"></a> 
     258    <input type="button" class="pickcolor button hide-if-no-js" value="<?php esc_attr_e( 'Select a Color', 'twentyeleven' ); ?>" /> 
     259    <div id="colorPickerDiv" style="z-index: 100; background:#eee; border:1px solid #ccc; position:absolute; display:none;"></div> 
     260    <br /> 
     261    <span><?php printf( __( 'Default color: %s', 'twentyeleven' ), '<span id="default-color">' . twentyeleven_get_default_link_color( $options['color_scheme'] ) . '</span>' ); ?></span> 
     262    <?php 
     263} 
     264 
     265/** 
     266 * Renders the Layout setting field. 
     267 *  
     268 * @since Twenty Eleven 1.2 
     269 */ 
     270function twentyeleven_settings_field_layout() { 
     271    $options = twentyeleven_get_theme_options(); 
     272    foreach ( twentyeleven_layouts() as $layout ) { 
     273        ?> 
     274        <div class="layout image-radio-option theme-layout"> 
     275        <label class="description"> 
     276            <input type="radio" name="twentyeleven_theme_options[theme_layout]" value="<?php echo esc_attr( $layout['value'] ); ?>" <?php checked( $options['theme_layout'], $layout['value'] ); ?> /> 
     277            <span> 
     278                <img src="<?php echo esc_url( $layout['thumbnail'] ); ?>" width="136" height="122" alt="" /> 
     279                <?php echo $layout['label']; ?> 
     280            </span> 
     281        </label> 
     282        </div> 
     283        <?php 
     284    } 
     285} 
     286 
     287/** 
    205288 * Returns the options array for Twenty Eleven. 
    206289 * 
     
    217300            <?php 
    218301                settings_fields( 'twentyeleven_options' ); 
    219                 $options = twentyeleven_get_theme_options(); 
    220                 $default_options = twentyeleven_get_default_theme_options(); 
     302 
     303                do_settings_sections( 'theme_options' ); 
     304 
     305                submit_button(); 
    221306            ?> 
    222  
    223             <table class="form-table"> 
    224  
    225                 <tr valign="top" class="image-radio-option color-scheme"><th scope="row"><?php _e( 'Color Scheme', 'twentyeleven' ); ?></th> 
    226                     <td> 
    227                         <fieldset><legend class="screen-reader-text"><span><?php _e( 'Color Scheme', 'twentyeleven' ); ?></span></legend> 
    228                         <?php 
    229                             foreach ( twentyeleven_color_schemes() as $scheme ) { 
    230                                 ?> 
    231                                 <div class="layout"> 
    232                                 <label class="description"> 
    233                                     <input type="radio" name="twentyeleven_theme_options[color_scheme]" value="<?php echo esc_attr( $scheme['value'] ); ?>" <?php checked( $options['color_scheme'], $scheme['value'] ); ?> /> 
    234                                     <input type="hidden" id="default-color-<?php echo esc_attr( $scheme['value'] ); ?>" value="<?php echo esc_attr( $scheme['default_link_color'] ); ?>" /> 
    235                                     <span> 
    236                                         <img src="<?php echo esc_url( $scheme['thumbnail'] ); ?>" width="136" height="122" alt="" /> 
    237                                         <?php echo $scheme['label']; ?> 
    238                                     </span> 
    239                                 </label> 
    240                                 </div> 
    241                                 <?php 
    242                             } 
    243                         ?> 
    244                         </fieldset> 
    245                     </td> 
    246                 </tr> 
    247  
    248                 <tr valign="top"><th scope="row"><?php _e( 'Link Color', 'twentyeleven' ); ?></th> 
    249                     <td> 
    250                         <fieldset><legend class="screen-reader-text"><span><?php _e( 'Link Color', 'twentyeleven' ); ?></span></legend> 
    251                             <input type="text" name="twentyeleven_theme_options[link_color]" id="link-color" value="<?php echo esc_attr( $options['link_color'] ); ?>" /> 
    252                             <a href="#" class="pickcolor hide-if-no-js" id="link-color-example"></a> 
    253                             <input type="button" class="pickcolor button hide-if-no-js" value="<?php esc_attr_e( 'Select a Color', 'twentyeleven' ); ?>" /> 
    254                             <div id="colorPickerDiv" style="z-index: 100; background:#eee; border:1px solid #ccc; position:absolute; display:none;"></div> 
    255                             <br /> 
    256                             <span><?php printf( __( 'Default color: %s', 'twentyeleven' ), '<span id="default-color">' . twentyeleven_get_default_link_color( $options['color_scheme'] ) . '</span>' ); ?></span> 
    257                         </fieldset> 
    258                     </td> 
    259                 </tr> 
    260  
    261                 <tr valign="top" class="image-radio-option theme-layout"><th scope="row"><?php _e( 'Default Layout', 'twentyeleven' ); ?></th> 
    262                     <td> 
    263                         <fieldset><legend class="screen-reader-text"><span><?php _e( 'Color Scheme', 'twentyeleven' ); ?></span></legend> 
    264                         <?php 
    265                             foreach ( twentyeleven_layouts() as $layout ) { 
    266                                 ?> 
    267                                 <div class="layout"> 
    268                                 <label class="description"> 
    269                                     <input type="radio" name="twentyeleven_theme_options[theme_layout]" value="<?php echo esc_attr( $layout['value'] ); ?>" <?php checked( $options['theme_layout'], $layout['value'] ); ?> /> 
    270                                     <span> 
    271                                         <img src="<?php echo esc_url( $layout['thumbnail'] ); ?>" width="136" height="122" alt="" /> 
    272                                         <?php echo $layout['label']; ?> 
    273                                     </span> 
    274                                 </label> 
    275                                 </div> 
    276                                 <?php 
    277                             } 
    278                         ?> 
    279                         </fieldset> 
    280                     </td> 
    281                 </tr> 
    282             </table> 
    283  
    284             <?php submit_button(); ?> 
    285307        </form> 
    286308    </div> 
Note: See TracChangeset for help on using the changeset viewer.