Make WordPress Core

Changeset 18455


Ignore:
Timestamp:
07/21/2011 09:37:31 PM (12 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.