daily pastebin goal
28%
SHARE
TWEET

Untitled

a guest Jun 24th, 2011 142 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2.  
  3. add_action( 'admin_init', 'theme_options_init' );
  4. add_action( 'admin_menu', 'theme_options_add_page' );
  5.  
  6. /**
  7.  * Init plugin options to white list our options
  8.  */
  9. function theme_options_init(){
  10.         register_setting( 'sample_options', 'sample_theme_options', 'theme_options_validate' );
  11. }
  12.  
  13. /**
  14.  * Load up the menu page
  15.  */
  16. function theme_options_add_page() {
  17.         add_theme_page( __( 'Theme Options', 'sampletheme' ), __( 'Theme Options', 'sampletheme' ), 'edit_theme_options', 'theme_options', 'theme_options_do_page' );
  18. }
  19.  
  20. /**
  21.  * Create arrays for our select and radio options
  22.  */
  23. $select_options = array(
  24.         '0' => array(
  25.                 'value' =>      '0',
  26.                 'label' => __( 'Zero', 'sampletheme' )
  27.         ),
  28.         '1' => array(
  29.                 'value' =>      '1',
  30.                 'label' => __( 'One', 'sampletheme' )
  31.         ),
  32.         '2' => array(
  33.                 'value' => '2',
  34.                 'label' => __( 'Two', 'sampletheme' )
  35.         ),
  36.         '3' => array(
  37.                 'value' => '3',
  38.                 'label' => __( 'Three', 'sampletheme' )
  39.         ),
  40.         '4' => array(
  41.                 'value' => '4',
  42.                 'label' => __( 'Four', 'sampletheme' )
  43.         ),
  44.         '5' => array(
  45.                 'value' => '3',
  46.                 'label' => __( 'Five', 'sampletheme' )
  47.         )
  48. );
  49.  
  50. $radio_options = array(
  51.         'yes' => array(
  52.                 'value' => 'yes',
  53.                 'label' => __( 'Yes', 'sampletheme' )
  54.         ),
  55.         'no' => array(
  56.                 'value' => 'no',
  57.                 'label' => __( 'No', 'sampletheme' )
  58.         ),
  59.         'maybe' => array(
  60.                 'value' => 'maybe',
  61.                 'label' => __( 'Maybe', 'sampletheme' )
  62.         )
  63. );
  64.  
  65. /**
  66.  * Create the options page
  67.  */
  68. function theme_options_do_page() {
  69.         global $select_options, $radio_options;
  70.  
  71.         if ( ! isset( $_REQUEST['settings-updated'] ) )
  72.                 $_REQUEST['settings-updated'] = false;
  73.  
  74.         ?>
  75.         <div class="wrap">
  76.                 <?php screen_icon(); echo "<h2>" . get_current_theme() . __( ' Theme Options', 'sampletheme' ) . "</h2>"; ?>
  77.  
  78.                 <?php if ( false !== $_REQUEST['settings-updated'] ) : ?>
  79.                 <div class="updated fade"><p><strong><?php _e( 'Options saved', 'sampletheme' ); ?></strong></p></div>
  80.                 <?php endif; ?>
  81.  
  82.                 <form method="post" action="options.php">
  83.                         <?php settings_fields( 'sample_options' ); ?>
  84.                         <?php $options = get_option( 'sample_theme_options' ); ?>
  85.  
  86.                         <table class="form-table">
  87.  
  88.                                 <?php
  89.                                 /**
  90.                                  * A sample checkbox option
  91.                                  */
  92.                                 ?>
  93.                                 <tr valign="top"><th scope="row"><?php _e( 'A checkbox', 'sampletheme' ); ?></th>
  94.                                         <td>
  95.                                                 <input id="sample_theme_options[option1]" name="sample_theme_options[option1]" type="checkbox" value="1" <?php checked( '1', $options['option1'] ); ?> />
  96.                                                 <label class="description" for="sample_theme_options[option1]"><?php _e( 'Sample checkbox', 'sampletheme' ); ?></label>
  97.                                         </td>
  98.                                 </tr>
  99.  
  100.                                 <?php
  101.                                 /**
  102.                                  * A sample text input option
  103.                                  */
  104.                                 ?>
  105.                                 <tr valign="top"><th scope="row"><?php _e( 'Some text', 'sampletheme' ); ?></th>
  106.                                         <td>
  107.                                                 <input id="sample_theme_options[sometext]" class="regular-text" type="text" name="sample_theme_options[sometext]" value="<?php esc_attr_e( $options['sometext'] ); ?>" />
  108.                                                 <label class="description" for="sample_theme_options[sometext]"><?php _e( 'Sample text input', 'sampletheme' ); ?></label>
  109.                                         </td>
  110.                                 </tr>
  111.  
  112.                                 <?php
  113.                                 /**
  114.                                  * A sample select input option
  115.                                  */
  116.                                 ?>
  117.                                 <tr valign="top"><th scope="row"><?php _e( 'Select input', 'sampletheme' ); ?></th>
  118.                                         <td>
  119.                                                 <select name="sample_theme_options[selectinput]">
  120.                                                         <?php
  121.                                                                 $selected = $options['selectinput'];
  122.                                                                 $p = '';
  123.                                                                 $r = '';
  124.  
  125.                                                                 foreach ( $select_options as $option ) {
  126.                                                                         $label = $option['label'];
  127.                                                                         if ( $selected == $option['value'] ) // Make default first in list
  128.                                                                                 $p = "\n\t<option style=\"padding-right: 10px;\" selected='selected' value='" . esc_attr( $option['value'] ) . "'>$label</option>";
  129.                                                                         else
  130.                                                                                 $r .= "\n\t<option style=\"padding-right: 10px;\" value='" . esc_attr( $option['value'] ) . "'>$label</option>";
  131.                                                                 }
  132.                                                                 echo $p . $r;
  133.                                                         ?>
  134.                                                 </select>
  135.                                                 <label class="description" for="sample_theme_options[selectinput]"><?php _e( 'Sample select input', 'sampletheme' ); ?></label>
  136.                                         </td>
  137.                                 </tr>
  138.  
  139.                                 <?php
  140.                                 /**
  141.                                  * A sample of radio buttons
  142.                                  */
  143.                                 ?>
  144.                                 <tr valign="top"><th scope="row"><?php _e( 'Radio buttons', 'sampletheme' ); ?></th>
  145.                                         <td>
  146.                                                 <fieldset><legend class="screen-reader-text"><span><?php _e( 'Radio buttons', 'sampletheme' ); ?></span></legend>
  147.                                                 <?php
  148.                                                         if ( ! isset( $checked ) )
  149.                                                                 $checked = '';
  150.                                                         foreach ( $radio_options as $option ) {
  151.                                                                 $radio_setting = $options['radioinput'];
  152.  
  153.                                                                 if ( '' != $radio_setting ) {
  154.                                                                         if ( $options['radioinput'] == $option['value'] ) {
  155.                                                                                 $checked = "checked=\"checked\"";
  156.                                                                         } else {
  157.                                                                                 $checked = '';
  158.                                                                         }
  159.                                                                 }
  160.                                                                 ?>
  161.                                                                 <label class="description"><input type="radio" name="sample_theme_options[radioinput]" value="<?php esc_attr_e( $option['value'] ); ?>" <?php echo $checked; ?> /> <?php echo $option['label']; ?></label><br />
  162.                                                                 <?php
  163.                                                         }
  164.                                                 ?>
  165.                                                 </fieldset>
  166.                                         </td>
  167.                                 </tr>
  168.  
  169.                                 <?php
  170.                                 /**
  171.                                  * A sample textarea option
  172.                                  */
  173.                                 ?>
  174.                                 <tr valign="top"><th scope="row"><?php _e( 'A textbox', 'sampletheme' ); ?></th>
  175.                                         <td>
  176.                                                 <textarea id="sample_theme_options[sometextarea]" class="large-text" cols="50" rows="10" name="sample_theme_options[sometextarea]"><?php echo esc_textarea( $options['sometextarea'] ); ?></textarea>
  177.                                                 <label class="description" for="sample_theme_options[sometextarea]"><?php _e( 'Sample text box', 'sampletheme' ); ?></label>
  178.                                         </td>
  179.                                 </tr>
  180.                         </table>
  181.  
  182.                         <p class="submit">
  183.                                 <input type="submit" class="button-primary" value="<?php _e( 'Save Options', 'sampletheme' ); ?>" />
  184.                         </p>
  185.                 </form>
  186.         </div>
  187.         <?php
  188. }
  189.  
  190. /**
  191.  * Sanitize and validate input. Accepts an array, return a sanitized array.
  192.  */
  193. function theme_options_validate( $input ) {
  194.         global $select_options, $radio_options;
  195.  
  196.         // Our checkbox value is either 0 or 1
  197.         if ( ! isset( $input['option1'] ) )
  198.                 $input['option1'] = null;
  199.         $input['option1'] = ( $input['option1'] == 1 ? 1 : 0 );
  200.  
  201.         // Say our text option must be safe text with no HTML tags
  202.         $input['sometext'] = wp_filter_nohtml_kses( $input['sometext'] );
  203.  
  204.         // Our select option must actually be in our array of select options
  205.         if ( ! array_key_exists( $input['selectinput'], $select_options ) )
  206.                 $input['selectinput'] = null;
  207.  
  208.         // Our radio option must actually be in our array of radio options
  209.         if ( ! isset( $input['radioinput'] ) )
  210.                 $input['radioinput'] = null;
  211.         if ( ! array_key_exists( $input['radioinput'], $radio_options ) )
  212.                 $input['radioinput'] = null;
  213.  
  214.         // Say our textarea option must be safe text with the allowed tags for posts
  215.         $input['sometextarea'] = wp_filter_post_kses( $input['sometextarea'] );
  216.  
  217.         return $input;
  218. }
  219.  
  220. // adapted from http://planetozh.com/blog/2009/05/handling-plugins-options-in-wordpress-28-with-register_setting/
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top