Using the WordPress Settings API | Code Symphony
Fri Jan 07 2022 09:55:21 GMT+0000 (Coordinated Universal Time)
Saved by @khalidlogi
<?php /** Set Defaults **/ add_option( 'myplugin_field_1', 'some default value' ); add_option( 'myplugin_field_2', '1' ); add_option( 'myplugin_field_3', 'another default value' ); /** Add Settings Page **/ function myplugin_settings_menu() { add_options_page( /*1*/ 'My Plugin Settings', /*2*/ 'My Plugin', /*3*/ 'manage_options', /*4*/ 'myplugin_settings', /*5*/ 'myplugin_settings_page' ); } add_action( 'admin_menu', 'myplugin_settings_menu' ); <?php /** Settings Page Content **/ function myplugin_settings_page() { ?> <div class="wrap"> <?php // Uncomment if this screen isn't added with add_options_page() // settings_errors(); ?> <h2>My Plugin</h2> <p>Some text describing what the plugin settings do.</p> <form method="post" action="options.php"> <?php // Output the settings sections. do_settings_sections( 'myplugin_settings' ); // Output the hidden fields, nonce, etc. settings_fields( 'myplugin_settings_group' ); // Submit button. submit_button(); ?> </form> </div> <?php } /** Settings Initialization **/ function myplugin_settings_init() { /** Setting section 1. **/ add_settings_section( /*1*/ 'myplugin_settings_section_1', /*2*/ 'Section 1', /*3*/ 'myplugin_settings_section_1_callback', /*4*/ 'myplugin_settings' ); // Field 1. add_settings_field( /*1*/ 'myplugin_field_1', /*2*/ 'Field 1', /*3*/ 'myplugin_field_1_input', /*4*/ 'myplugin_settings', /*5*/ 'myplugin_settings_section_1' ); // Register this field with our settings group. register_setting( 'myplugin_settings_group', 'myplugin_field_1' ); /** Section 2 **/ add_settings_section( /*1*/ 'myplugin_settings_section_2', /*2*/ 'Section 2', /*3*/ 'myplugin_settings_section_2_callback', /*4*/ 'myplugin_settings' ); // Field 2. add_settings_field( /*1*/ 'myplugin_field_2', /*2*/ 'Field 2', /*3*/ 'myplugin_field_2_input', /*4*/ 'myplugin_settings', /*5*/ 'myplugin_settings_section_2' ); // Register this field with our settings group. register_setting( 'myplugin_settings_group', 'myplugin_field_2' ); // Field 3. add_settings_field( /*1*/ 'myplugin_field_3', /*2*/ 'Field 3', /*3*/ 'myplugin_field_3_input', /*4*/ 'myplugin_settings', /*5*/ 'myplugin_settings_section_2' ); // Register this field with our settings group. register_setting( 'myplugin_settings_group', 'myplugin_field_3' ); } add_action( 'admin_init', 'myplugin_settings_init' ); function myplugin_settings_section_1_callback() { echo( 'Some info about this section.' ); } function myplugin_settings_section_2_callback() { echo( 'An explanation of this section.' ); } /** Field 1 Input **/ function myplugin_field_1_input() { echo( '<input type="text" name="myplugin_field_1" id="myplugin_field_1" value="'. get_option( 'myplugini_field_1' ) .'" />' ); } /** Field 2 Input **/ function myplugin_field_2_input() { // This example input will be a dropdown. // Available options. $options = array( '1' => 'Option 1', '2' => 'Option 2', '3' => 'Option 3', ); // Current setting. $current = get_option( 'myplugin_field_2' ); // Build <select> element. $html = '<select id="myplugin_field_2" name="myplugin_field_2">'; foreach ( $options as $value => $text ) { $html .= '<option value="'. $value .'"'; // We make sure the current options selected. if ( $value == $current ) $html .= ' selected="selected"'; $html .= '>'. $text .'</option>'; } $html .= '</select>'; echo( $html ); } /** Field 3 Input **/ function myplugin_field_3_input() { // Output the form input, with the current setting as the value. echo( '<input type="text" name="myplugin_field_3" id="myplugin_field_3" value="'. get_option( 'myplugin_field_3' ) .'" />' ); } ?>
Comments