The Settings API
-
Upload
konstantin-kovshenin -
Category
Documents
-
view
2.353 -
download
0
description
Transcript of The Settings API
The Settings APIKonstantin Kovsheninkovshenin.com
Setting
Field Section
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
Recap
add_options_page()register_setting()add_settings_section()add_settings_field()
settings_fields()do_settings_sections()submit_button()
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' />";}