SlideShare a Scribd company logo
The Settings API
  Konstantin Kovshenin
  kovshenin.com
Setting




Field             Section
The Settings API
The Settings API
The Settings API
The Settings API
add_options_page()




ref: http://codex.wordpress.org/Function_Reference/add_options_page
add_action( 'admin_menu', 'my_admin_menu' );
function my_admin_menu() {
    add_options_page( 'My Plugin', 'My Plugin', 'manage_options',
       'my-plugin', 'my_options_page' );
}
add_action( 'admin_menu', 'my_admin_menu' );
function my_admin_menu() {
    add_options_page( 'My Plugin', 'My Plugin', 'manage_options',
       'my-plugin', 'my_options_page' );
}
add_action( 'admin_menu', 'my_admin_menu' );
function my_admin_menu() {
    add_options_page( 'My Plugin', 'My Plugin', 'manage_options',
       'my-plugin', 'my_options_page' );
}
add_action( 'admin_menu', 'my_admin_menu' );
  function my_admin_menu() {
          add_options_page( 'My Plugin', 'My Plugin', 'manage_options',
                  'my-plugin', 'my_options_page' );
  }




ref: http://codex.wordpress.org/Roles_and_Capabilities
add_action( 'admin_menu', 'my_admin_menu' );
function my_admin_menu() {
    add_options_page( 'My Plugin', 'My Plugin', 'manage_options',
        'my-plugin', 'my_options_page' );
}
add_action( 'admin_menu', 'my_admin_menu' );
function my_admin_menu() {
    add_options_page( 'My Plugin', 'My Plugin', 'manage_options',
       'my-plugin', 'my_options_page' );
}
add_action( 'admin_menu', 'my_admin_menu' );
function my_admin_menu() {
    add_options_page( 'My Plugin', 'My Plugin', 'manage_options',
       'my-plugin', 'my_options_page' );
}
register_setting()
                                  add_settings_section()
                                  add_settings_field()




ref: http://codex.wordpress.org/Settings_API
add_action( 'admin_init', 'my_admin_init' );
function my_admin_init() {
    register_setting( 'my-settings-group', 'my-setting' );
    add_settings_section( 'section-one', 'Section One',
        'section_one_callback', 'my-plugin' );
    add_settings_field( 'field-one', 'Field One',
        'field_one_callback', 'my-plugin', 'section-one' );
}
add_action( 'admin_init', 'my_admin_init' );
  function my_admin_init() {
          register_setting( 'my-settings-group', 'my-setting' );
          add_settings_section( 'section-one', 'Section One',
                  'section_one_callback', 'my-plugin' );
          add_settings_field( 'field-one', 'Field One',
                  'field_one_callback', 'my-plugin', 'section-one' );
  }




ref: http://codex.wordpress.org/Function_Reference/register_setting
add_action( 'admin_init', 'my_admin_init' );
function my_admin_init() {
    register_setting( 'my-settings-group', 'my-setting' );
    add_settings_section( 'section-one', 'Section One',
        'section_one_callback', 'my-plugin' );
    add_settings_field( 'field-one', 'Field One',
        'field_one_callback', 'my-plugin', 'section-one' );
}



[...]
get_option( 'my-setting' );
update_option( 'my-setting', ‘my value’ );
add_action( 'admin_init', 'my_admin_init' );
  function my_admin_init() {
          register_setting( 'my-settings-group', 'my-setting' );
          add_settings_section( 'section-one', 'Section One',
                 'section_one_callback', 'my-plugin' );
          add_settings_field( 'field-one', 'Field One',
                 'field_one_callback', 'my-plugin', 'section-one' );
  }




ref: http://codex.wordpress.org/Function_Reference/add_settings_section
add_action( 'admin_init', 'my_admin_init' );
function my_admin_init() {
    register_setting( 'my-settings-group', 'my-setting' );
    add_settings_section( 'section-one', 'Section One',
        'section_one_callback', 'my-plugin' );
    add_settings_field( 'field-one', 'Field One',
        'field_one_callback', 'my-plugin', 'section-one' );
}
add_action( 'admin_init', 'my_admin_init' );
function my_admin_init() {
    register_setting( 'my-settings-group', 'my-setting' );
    add_settings_section( 'section-one', 'Section One',
        'section_one_callback', 'my-plugin' );
    add_settings_field( 'field-one', 'Field One',
        'field_one_callback', 'my-plugin', 'section-one' );
}
add_action( 'admin_init', 'my_admin_init' );
function my_admin_init() {
    register_setting( 'my-settings-group', 'my-setting' );
    add_settings_section( 'section-one', 'Section One',
        'section_one_callback', 'my-plugin' );
    add_settings_field( 'field-one', 'Field One',
        'field_one_callback', 'my-plugin', 'section-one' );
}



[...]
add_options_page( ..., 'my-plugin', ... );
add_action( 'admin_init', 'my_admin_init' );
  function my_admin_init() {
          register_setting( 'my-settings-group', 'my-setting' );
          add_settings_section( 'section-one', 'Section One',
                  'section_one_callback', 'my-plugin' );
          add_settings_field( 'field-one', 'Field One',
                  'field_one_callback', 'my-plugin', 'section-one' );
  }




ref: http://codex.wordpress.org/Function_Reference/add_settings_field
add_action( 'admin_init', 'my_admin_init' );
function my_admin_init() {
    register_setting( 'my-settings-group', 'my-setting' );
    add_settings_section( 'section-one', 'Section One',
        'section_one_callback', 'my-plugin' );
    add_settings_field( 'field-one', 'Field One',
        'field_one_callback', 'my-plugin', 'section-one' );
}
add_action( 'admin_init', 'my_admin_init' );
function my_admin_init() {
    register_setting( 'my-settings-group', 'my-setting' );
    add_settings_section( 'section-one', 'Section One',
        'section_one_callback', 'my-plugin' );
    add_settings_field( 'field-one', 'Field One',
        'field_one_callback', 'my-plugin', 'section-one' );
}
add_action( 'admin_init', 'my_admin_init' );
function my_admin_init() {
    register_setting( 'my-settings-group', 'my-setting' );
    add_settings_section( 'section-one', 'Section One',
        'section_one_callback', 'my-plugin' );
    add_settings_field( 'field-one', 'Field One',
        'field_one_callback', 'my-plugin', 'section-one' );
}



[...]
add_options_page( ..., 'my-plugin', ... );
add_action( 'admin_init', 'my_admin_init' );
function my_admin_init() {
    register_setting( 'my-settings-group', 'my-setting' );
    add_settings_section( 'section-one', 'Section One',
        'section_one_callback', 'my-plugin' );
    add_settings_field( 'field-one', 'Field One',
        'field_one_callback', 'my-plugin', 'section-one' );
}
add_action( 'admin_init', 'my_admin_init' );
function my_admin_init() {
    register_setting( 'my-settings-group', 'my-setting' );
    add_settings_section( 'section-one', 'Section One',
        'section_one_callback', 'my-plugin' );
    add_settings_field( 'field-one', 'Field One',
        'field_one_callback', 'my-plugin', 'section-one' );
}
function section_one_callback() {
    echo 'Some help text goes here.';
}
function field_one_callback() {
    $setting = esc_attr( get_option( 'my-setting' ) );
    echo "<input type='text' name='my-setting' value='$setting' />";
}



[...]
register_setting( 'my-settings-group', 'my-setting' );
add_action( 'admin_menu', 'my_admin_menu' );
function my_admin_menu() {
    add_options_page( 'My Plugin', 'My Plugin', 'manage_options',
       'my-plugin', 'my_options_page' );
}
function my_options_page() {
    ?>
    <div class="wrap">
         <h2>My Plugin Options</h2>
         <form action="options.php" method="POST">
             <?php settings_fields( 'my-settings-group' ); ?>
             <?php do_settings_sections( 'my-plugin' ); ?>
             <?php submit_button(); ?>
         </form>
    </div>
    <?php
}
function my_options_page() {
    ?>
    <div class="wrap">
         <h2>My Plugin Options</h2>
         <form action="options.php" method="POST">
             <?php settings_fields( 'my-settings-group' ); ?>
             <?php do_settings_sections( 'my-plugin' ); ?>
             <?php submit_button(); ?>
         </form>
    </div>
    <?php
}
function my_options_page() {
    ?>
    <div class="wrap">
         <h2>My Plugin Options</h2>
         <form action="options.php" method="POST">
             <?php settings_fields( 'my-settings-group' ); ?>
             <?php do_settings_sections( 'my-plugin' ); ?>
             <?php submit_button(); ?>
         </form>
    </div>
    <?php
}


[...]
register_setting( 'my-settings-group', 'my-setting' );
function my_options_page() {
    ?>
    <div class="wrap">
         <h2>My Plugin Options</h2>
         <form action="options.php" method="POST">
             <?php settings_fields( 'my-settings-group' ); ?>
             <?php do_settings_sections( 'my-plugin' ); ?>
             <?php submit_button(); ?>
         </form>
    </div>
    <?php
}


[...]
add_options_page( ..., 'my-plugin', ... );
function my_options_page() {
         ?>
         <div class="wrap">
                 <h2>My Plugin Options</h2>
                 <form action="options.php" method="POST">
                         <?php settings_fields( 'my-settings-group' ); ?>
                         <?php do_settings_sections( 'my-plugin' ); ?>
                         <?php submit_button(); ?>
                 </form>
         </div>
         <?php
 }




ref: http://codex.wordpress.org/Function_Reference/submit_button
The Settings API
Recap
add_options_page()
register_setting()
add_settings_section()
add_settings_field()


settings_fields()
do_settings_sections()
submit_button()
The Settings API
The Settings API
Using Arrays with the Settings API
register_setting( 'my-settings-group', 'color' );
register_setting( 'my-settings-group', 'size' );
register_setting( 'my-settings-group', 'quantity' );
register_setting( 'my-settings-group', 'my-settings' );
function field_one_callback() {
    $settings = (array) get_option( 'my-settings' );
    $color = esc_attr( $settings['color'] );
    echo "<input type='text' name='my-settings[color]'
        value='$color' />";
}
Sanitization
register_setting( 'my-settings-group', 'my-settings',
   'my_settings_sanitize' );
function my_settings_sanitize( $input ) {
    $input['quantity'] = absint( $input['quantity'] );
    return $input;
}
Validation
function my_settings_validate( $input ) {
    $output = get_option( 'my-settings' );


    if ( is_email( $input['email'] ) )
           $output['email'] = $input['email'];
    else
        add_settings_error( 'my-settings', 'invalid-email',
              'You have entered an invalid e-mail address.' );


    return $output;
}
Reusing Controls with the Settings API
add_settings_field( 'email', 'E-mail', 'my_text_input',
     'my-plugin', 'section-one', array(
         'name'   => 'my-settings[email]',
         'value' => $settings['email'],
     )
);
function my_text_input( $args ) {
    $name = esc_attr( $args['name'] );
    $value = esc_attr( $args['value'] );
    echo "<input type='text' name='$name' value='$value' />";
}
The Settings API
The Settings API
The Settings API

More Related Content

PDF
Django Class-based views (Slovenian)
PDF
Mashing up JavaScript
PDF
Mashing up JavaScript – Advanced Techniques for modern Web Apps
TXT
Codigo taller-plugins
PDF
WordCamp Montreal 2015: Combining Custom Post Types, Fields, and Meta Boxes t...
PDF
Bag Of Tricks From Iusethis
ZIP
First Steps in Drupal Code Driven Development
PPTX
Optimizing Angular Performance in Enterprise Single Page Apps
Django Class-based views (Slovenian)
Mashing up JavaScript
Mashing up JavaScript – Advanced Techniques for modern Web Apps
Codigo taller-plugins
WordCamp Montreal 2015: Combining Custom Post Types, Fields, and Meta Boxes t...
Bag Of Tricks From Iusethis
First Steps in Drupal Code Driven Development
Optimizing Angular Performance in Enterprise Single Page Apps

What's hot (20)

PDF
Using and reusing CakePHP plugins
PPTX
Pengenalan blaast platform sdk
KEY
Keeping It Simple
PDF
sfDay Cologne - Sonata Admin Bundle
PDF
前端MVC 豆瓣说
PPTX
Сергей Иващенко - Meet Magento Ukraine - Цены в Magento 2
PDF
Laravel 로 배우는 서버사이드 #5
DOC
Jquery examples
PDF
Introduction to Web Components
PPTX
Magento 2 | Declarative schema
PDF
jQuery and Rails, Sitting in a Tree
KEY
Unit testing with zend framework PHPBenelux
PPTX
Magento Live Australia 2016: Request Flow
PDF
Empowering users: modifying the admin experience
TXT
Data20161007
PPTX
Amp Up Your Admin
PDF
Unit testing with zend framework tek11
PDF
망고100 보드로 놀아보자 18
PDF
RubyBarCamp “Полезные gems и plugins”
PPTX
Using and reusing CakePHP plugins
Pengenalan blaast platform sdk
Keeping It Simple
sfDay Cologne - Sonata Admin Bundle
前端MVC 豆瓣说
Сергей Иващенко - Meet Magento Ukraine - Цены в Magento 2
Laravel 로 배우는 서버사이드 #5
Jquery examples
Introduction to Web Components
Magento 2 | Declarative schema
jQuery and Rails, Sitting in a Tree
Unit testing with zend framework PHPBenelux
Magento Live Australia 2016: Request Flow
Empowering users: modifying the admin experience
Data20161007
Amp Up Your Admin
Unit testing with zend framework tek11
망고100 보드로 놀아보자 18
RubyBarCamp “Полезные gems и plugins”
Ad

Viewers also liked (9)

PDF
Основые безопасности WordPress
PDF
Почему HTTPS соединение необходимо реализовать на Вашем сайте?
PDF
Цикл разработки WordPress
PDF
Секреты WP_Query
PDF
Memory Management in WordPress
PDF
WordPress под нагрузкой: масштабирование и отказоустойчивость
PDF
Пожиратели памяти в WordPress
PDF
7 убийц производительности WordPress
Основые безопасности WordPress
Почему HTTPS соединение необходимо реализовать на Вашем сайте?
Цикл разработки WordPress
Секреты WP_Query
Memory Management in WordPress
WordPress под нагрузкой: масштабирование и отказоустойчивость
Пожиратели памяти в WordPress
7 убийц производительности WordPress
Ad

Similar to The Settings API (20)

PPTX
WordPress plugin #3
PDF
WordCamp Praga 2015
PDF
Gail villanueva add muscle to your wordpress site
PDF
Working with WooCommerce Custom Fields
PDF
Gutenberg sous le capot, modules réutilisables
PDF
How to Create A Magento Adminhtml Controller in Magento Extension
PDF
Dig Deeper into WordPress - WD Meetup Cairo
PDF
날로 먹는 Django admin 활용
PDF
Unit testing after Zend Framework 1.8
PPTX
WordPress 15th Meetup - Build a Theme
PDF
Curso Symfony - Clase 3
PPTX
WordPress Plugin development
PDF
Be RESTful (Symfony Camp 2008)
PDF
Gae Meets Django
KEY
Apostrophe (improved Paris edition)
PDF
Django Vs Rails
PDF
Clean Javascript
PDF
Demystifying Hooks, Actions & Filters - WordCamp Belfast 2018
PDF
The state of Symfony2 - SymfonyDay 2010
PDF
ACL in CodeIgniter
WordPress plugin #3
WordCamp Praga 2015
Gail villanueva add muscle to your wordpress site
Working with WooCommerce Custom Fields
Gutenberg sous le capot, modules réutilisables
How to Create A Magento Adminhtml Controller in Magento Extension
Dig Deeper into WordPress - WD Meetup Cairo
날로 먹는 Django admin 활용
Unit testing after Zend Framework 1.8
WordPress 15th Meetup - Build a Theme
Curso Symfony - Clase 3
WordPress Plugin development
Be RESTful (Symfony Camp 2008)
Gae Meets Django
Apostrophe (improved Paris edition)
Django Vs Rails
Clean Javascript
Demystifying Hooks, Actions & Filters - WordCamp Belfast 2018
The state of Symfony2 - SymfonyDay 2010
ACL in CodeIgniter

More from Konstantin Kovshenin (8)

PDF
Scaling out with WordPress
PDF
Будущее WordPress (SPB, 2014)
PDF
Road to Platform @ WordPress.com VIP Workshop 2014
PDF
Будущее WordPress
PDF
Templating WordPress
PDF
Как повысить скорость вашего сайта на WordPress
PDF
Things I Wish I Had Known Before Developing a WordPress Theme
PDF
7 Tips for Better WordPress Theme Development
Scaling out with WordPress
Будущее WordPress (SPB, 2014)
Road to Platform @ WordPress.com VIP Workshop 2014
Будущее WordPress
Templating WordPress
Как повысить скорость вашего сайта на WordPress
Things I Wish I Had Known Before Developing a WordPress Theme
7 Tips for Better WordPress Theme Development

The Settings API

  • 1. The Settings API Konstantin Kovshenin kovshenin.com
  • 2. Setting Field Section
  • 8. add_action( 'admin_menu', 'my_admin_menu' ); function my_admin_menu() { add_options_page( 'My Plugin', 'My Plugin', 'manage_options', 'my-plugin', 'my_options_page' ); }
  • 9. add_action( 'admin_menu', 'my_admin_menu' ); function my_admin_menu() { add_options_page( 'My Plugin', 'My Plugin', 'manage_options', 'my-plugin', 'my_options_page' ); }
  • 10. add_action( 'admin_menu', 'my_admin_menu' ); function my_admin_menu() { add_options_page( 'My Plugin', 'My Plugin', 'manage_options', 'my-plugin', 'my_options_page' ); }
  • 11. add_action( 'admin_menu', 'my_admin_menu' ); function my_admin_menu() { add_options_page( 'My Plugin', 'My Plugin', 'manage_options', 'my-plugin', 'my_options_page' ); } ref: http://codex.wordpress.org/Roles_and_Capabilities
  • 12. add_action( 'admin_menu', 'my_admin_menu' ); function my_admin_menu() { add_options_page( 'My Plugin', 'My Plugin', 'manage_options', 'my-plugin', 'my_options_page' ); }
  • 13. add_action( 'admin_menu', 'my_admin_menu' ); function my_admin_menu() { add_options_page( 'My Plugin', 'My Plugin', 'manage_options', 'my-plugin', 'my_options_page' ); }
  • 14. add_action( 'admin_menu', 'my_admin_menu' ); function my_admin_menu() { add_options_page( 'My Plugin', 'My Plugin', 'manage_options', 'my-plugin', 'my_options_page' ); }
  • 15. register_setting() add_settings_section() add_settings_field() ref: http://codex.wordpress.org/Settings_API
  • 16. add_action( 'admin_init', 'my_admin_init' ); function my_admin_init() { register_setting( 'my-settings-group', 'my-setting' ); add_settings_section( 'section-one', 'Section One', 'section_one_callback', 'my-plugin' ); add_settings_field( 'field-one', 'Field One', 'field_one_callback', 'my-plugin', 'section-one' ); }
  • 17. add_action( 'admin_init', 'my_admin_init' ); function my_admin_init() { register_setting( 'my-settings-group', 'my-setting' ); add_settings_section( 'section-one', 'Section One', 'section_one_callback', 'my-plugin' ); add_settings_field( 'field-one', 'Field One', 'field_one_callback', 'my-plugin', 'section-one' ); } ref: http://codex.wordpress.org/Function_Reference/register_setting
  • 18. add_action( 'admin_init', 'my_admin_init' ); function my_admin_init() { register_setting( 'my-settings-group', 'my-setting' ); add_settings_section( 'section-one', 'Section One', 'section_one_callback', 'my-plugin' ); add_settings_field( 'field-one', 'Field One', 'field_one_callback', 'my-plugin', 'section-one' ); } [...] get_option( 'my-setting' ); update_option( 'my-setting', ‘my value’ );
  • 19. add_action( 'admin_init', 'my_admin_init' ); function my_admin_init() { register_setting( 'my-settings-group', 'my-setting' ); add_settings_section( 'section-one', 'Section One', 'section_one_callback', 'my-plugin' ); add_settings_field( 'field-one', 'Field One', 'field_one_callback', 'my-plugin', 'section-one' ); } ref: http://codex.wordpress.org/Function_Reference/add_settings_section
  • 20. add_action( 'admin_init', 'my_admin_init' ); function my_admin_init() { register_setting( 'my-settings-group', 'my-setting' ); add_settings_section( 'section-one', 'Section One', 'section_one_callback', 'my-plugin' ); add_settings_field( 'field-one', 'Field One', 'field_one_callback', 'my-plugin', 'section-one' ); }
  • 21. add_action( 'admin_init', 'my_admin_init' ); function my_admin_init() { register_setting( 'my-settings-group', 'my-setting' ); add_settings_section( 'section-one', 'Section One', 'section_one_callback', 'my-plugin' ); add_settings_field( 'field-one', 'Field One', 'field_one_callback', 'my-plugin', 'section-one' ); }
  • 22. add_action( 'admin_init', 'my_admin_init' ); function my_admin_init() { register_setting( 'my-settings-group', 'my-setting' ); add_settings_section( 'section-one', 'Section One', 'section_one_callback', 'my-plugin' ); add_settings_field( 'field-one', 'Field One', 'field_one_callback', 'my-plugin', 'section-one' ); } [...] add_options_page( ..., 'my-plugin', ... );
  • 23. add_action( 'admin_init', 'my_admin_init' ); function my_admin_init() { register_setting( 'my-settings-group', 'my-setting' ); add_settings_section( 'section-one', 'Section One', 'section_one_callback', 'my-plugin' ); add_settings_field( 'field-one', 'Field One', 'field_one_callback', 'my-plugin', 'section-one' ); } ref: http://codex.wordpress.org/Function_Reference/add_settings_field
  • 24. add_action( 'admin_init', 'my_admin_init' ); function my_admin_init() { register_setting( 'my-settings-group', 'my-setting' ); add_settings_section( 'section-one', 'Section One', 'section_one_callback', 'my-plugin' ); add_settings_field( 'field-one', 'Field One', 'field_one_callback', 'my-plugin', 'section-one' ); }
  • 25. add_action( 'admin_init', 'my_admin_init' ); function my_admin_init() { register_setting( 'my-settings-group', 'my-setting' ); add_settings_section( 'section-one', 'Section One', 'section_one_callback', 'my-plugin' ); add_settings_field( 'field-one', 'Field One', 'field_one_callback', 'my-plugin', 'section-one' ); }
  • 26. add_action( 'admin_init', 'my_admin_init' ); function my_admin_init() { register_setting( 'my-settings-group', 'my-setting' ); add_settings_section( 'section-one', 'Section One', 'section_one_callback', 'my-plugin' ); add_settings_field( 'field-one', 'Field One', 'field_one_callback', 'my-plugin', 'section-one' ); } [...] add_options_page( ..., 'my-plugin', ... );
  • 27. add_action( 'admin_init', 'my_admin_init' ); function my_admin_init() { register_setting( 'my-settings-group', 'my-setting' ); add_settings_section( 'section-one', 'Section One', 'section_one_callback', 'my-plugin' ); add_settings_field( 'field-one', 'Field One', 'field_one_callback', 'my-plugin', 'section-one' ); }
  • 28. add_action( 'admin_init', 'my_admin_init' ); function my_admin_init() { register_setting( 'my-settings-group', 'my-setting' ); add_settings_section( 'section-one', 'Section One', 'section_one_callback', 'my-plugin' ); add_settings_field( 'field-one', 'Field One', 'field_one_callback', 'my-plugin', 'section-one' ); }
  • 29. function section_one_callback() { echo 'Some help text goes here.'; }
  • 30. function field_one_callback() { $setting = esc_attr( get_option( 'my-setting' ) ); echo "<input type='text' name='my-setting' value='$setting' />"; } [...] register_setting( 'my-settings-group', 'my-setting' );
  • 31. add_action( 'admin_menu', 'my_admin_menu' ); function my_admin_menu() { add_options_page( 'My Plugin', 'My Plugin', 'manage_options', 'my-plugin', 'my_options_page' ); }
  • 32. function my_options_page() { ?> <div class="wrap"> <h2>My Plugin Options</h2> <form action="options.php" method="POST"> <?php settings_fields( 'my-settings-group' ); ?> <?php do_settings_sections( 'my-plugin' ); ?> <?php submit_button(); ?> </form> </div> <?php }
  • 33. function my_options_page() { ?> <div class="wrap"> <h2>My Plugin Options</h2> <form action="options.php" method="POST"> <?php settings_fields( 'my-settings-group' ); ?> <?php do_settings_sections( 'my-plugin' ); ?> <?php submit_button(); ?> </form> </div> <?php }
  • 34. function my_options_page() { ?> <div class="wrap"> <h2>My Plugin Options</h2> <form action="options.php" method="POST"> <?php settings_fields( 'my-settings-group' ); ?> <?php do_settings_sections( 'my-plugin' ); ?> <?php submit_button(); ?> </form> </div> <?php } [...] register_setting( 'my-settings-group', 'my-setting' );
  • 35. function my_options_page() { ?> <div class="wrap"> <h2>My Plugin Options</h2> <form action="options.php" method="POST"> <?php settings_fields( 'my-settings-group' ); ?> <?php do_settings_sections( 'my-plugin' ); ?> <?php submit_button(); ?> </form> </div> <?php } [...] add_options_page( ..., 'my-plugin', ... );
  • 36. function my_options_page() { ?> <div class="wrap"> <h2>My Plugin Options</h2> <form action="options.php" method="POST"> <?php settings_fields( 'my-settings-group' ); ?> <?php do_settings_sections( 'my-plugin' ); ?> <?php submit_button(); ?> </form> </div> <?php } ref: http://codex.wordpress.org/Function_Reference/submit_button
  • 38. Recap
  • 42. Using Arrays with the Settings API
  • 43. register_setting( 'my-settings-group', 'color' ); register_setting( 'my-settings-group', 'size' ); register_setting( 'my-settings-group', 'quantity' );
  • 45. function field_one_callback() { $settings = (array) get_option( 'my-settings' ); $color = esc_attr( $settings['color'] ); echo "<input type='text' name='my-settings[color]' value='$color' />"; }
  • 48. function my_settings_sanitize( $input ) { $input['quantity'] = absint( $input['quantity'] ); return $input; }
  • 50. function my_settings_validate( $input ) { $output = get_option( 'my-settings' ); if ( is_email( $input['email'] ) ) $output['email'] = $input['email']; else add_settings_error( 'my-settings', 'invalid-email', 'You have entered an invalid e-mail address.' ); return $output; }
  • 51. Reusing Controls with the Settings API
  • 52. add_settings_field( 'email', 'E-mail', 'my_text_input', 'my-plugin', 'section-one', array( 'name' => 'my-settings[email]', 'value' => $settings['email'], ) );
  • 53. function my_text_input( $args ) { $name = esc_attr( $args['name'] ); $value = esc_attr( $args['value'] ); echo "<input type='text' name='$name' value='$value' />"; }