Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $options['id_number']
- delete_option('my_option_name'); // regular site options
- delete_site_option('my_option_name'); // multisite options
- $this->options = get_option( 'my_option_name' );
- $this->defaults = array (
- 'id_number' => 123,
- 'title' => 'my title',
- );
- $this->options = get_option($this->'my_option_name', $this->defaults );
- $this->options = wp_parse_args( $this->options, $this->defaults );
- <?php
- class MySettingsPage
- {
- /**
- * Holds the values to be used in the fields callbacks
- */
- private $options;
- /**
- * Start up
- */
- public function __construct()
- {
- add_action( 'admin_menu', array( $this, 'add_plugin_page' ) );
- add_action( 'admin_init', array( $this, 'page_init' ) );
- }
- /**
- * Add options page
- */
- public function add_plugin_page()
- {
- // This page will be under "Settings"
- add_options_page(
- 'Settings Admin',
- 'My Settings',
- 'manage_options',
- 'my-setting-admin',
- array( $this, 'create_admin_page' )
- );
- }
- /**
- * Options page callback
- */
- public function create_admin_page()
- {
- // Set class property
- $this->options = get_option( 'my_option_name' );
- ?>
- <div class="wrap">
- <h1>My Settings</h1>
- <form method="post" action="options.php">
- <?php
- // This prints out all hidden setting fields
- settings_fields( 'my_option_group' );
- do_settings_sections( 'my-setting-admin' );
- submit_button();
- ?>
- </form>
- </div>
- <?php
- }
- /**
- * Register and add settings
- */
- public function page_init()
- {
- register_setting(
- 'my_option_group', // Option group
- 'my_option_name', // Option name
- array( $this, 'sanitize' ) // Sanitize
- );
- add_settings_section(
- 'setting_section_id', // ID
- 'My Custom Settings', // Title
- array( $this, 'print_section_info' ), // Callback
- 'my-setting-admin' // Page
- );
- add_settings_field(
- 'id_number', // ID
- 'ID Number', // Title
- array( $this, 'id_number_callback' ), // Callback
- 'my-setting-admin', // Page
- 'setting_section_id' // Section
- );
- add_settings_field(
- 'title',
- 'Title',
- array( $this, 'title_callback' ),
- 'my-setting-admin',
- 'setting_section_id'
- );
- }
- /**
- * Sanitize each setting field as needed
- *
- * @param array $input Contains all settings fields as array keys
- */
- public function sanitize( $input )
- {
- $new_input = array();
- if( isset( $input['id_number'] ) )
- $new_input['id_number'] = absint( $input['id_number'] );
- if( isset( $input['title'] ) )
- $new_input['title'] = sanitize_text_field( $input['title'] );
- return $new_input;
- }
- /**
- * Print the Section text
- */
- public function print_section_info()
- {
- print 'Enter your settings below:';
- }
- /**
- * Get the settings option array and print one of its values
- */
- public function id_number_callback()
- {
- printf(
- '<input type="text" id="id_number" name="my_option_name[id_number]" value="%s" />',
- isset( $this->options['id_number'] ) ? esc_attr( $this->options['id_number']) : ''
- );
- }
- /**
- * Get the settings option array and print one of its values
- */
- public function title_callback()
- {
- printf(
- '<input type="text" id="title" name="my_option_name[title]" value="%s" />',
- isset( $this->options['title'] ) ? esc_attr( $this->options['title']) : ''
- );
- }
- }
- if( is_admin() )
- $my_settings_page = new MySettingsPage();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement