Set default value for add_settings_field
-
Hi, I’m trying to create an options page, but I’m having trouble with the new fields. I don’t know how to add default values for all fields. I am posting the code how I create the field.
public function style_settings_page_init() { add_settings_field( 'background_color_3', // id 'Background color', // title array( $this, 'background_color_3_callback' ), // callback 'style-settings-admin', // page 'style_settings_setting_section', // section ); }public function style_settings_sanitize($input) { $sanitary_values = array(); if ( isset( $input['background_color_3'] ) ) { $sanitary_values['background_color_3'] = sanitize_text_field( $input['background_color_3'] ); } return $sanitary_values; }public function background_color_3_callback() { printf( '<input class="color" type="color" name="style_settings_option_name[background_color_3]" id="background_color_3" value="%s">', isset( $this->style_settings_options['background_color_3'] ) ? esc_attr( $this->style_settings_options['background_color_3']) : '' ); }
-
Hi @lucas1559 You can do like this.
if ( get_option( 'my_setting' ) === false ) // if no data saved update_option( 'my_setting', 'defaultvalue' );Let me know this is helpful to you or not.
Hi, thanks for your help but it doesn’t work.
I am posting the full code, I think it would help to understand more.
This is the submenu of my plugins admin page.<?php class StyleSettings { private $style_settings_options; public $error_message = ""; public $success_message = ""; public function __construct() { add_action( 'admin_menu', array( $this, 'style_settings_add_plugin_page' ) ); add_action( 'admin_init', array( $this, 'style_settings_page_init' ) ); } public function style_settings_add_plugin_page() { add_submenu_page( 'woocb', 'Style Settings', //page title 'Style Settings', //menu title 'manage_options', //capability, 'style-settings',//menu slug array( $this, 'style_settings_create_admin_page' ) // function ); } public function style_settings_create_admin_page() { $this->style_settings_options = get_option( 'style_settings_option_name' ); ?> <div class="wrap"> <h2>Style Settings</h2> <p></p> <?php settings_errors(); ?> <form method="post" action="options.php"> <?php settings_fields( 'style_settings_option_group' ); do_settings_sections( 'style-settings-admin' ); submit_button(); ?> </form> </div> <?php } public function style_settings_page_init() { register_setting( 'style_settings_option_group', // option_group 'style_settings_option_name', // option_name array( $this, 'style_settings_sanitize' ) // sanitize_callback ); add_settings_section( 'style_settings_setting_section', // id 'Settings', // title array( $this, 'style_settings_section_info' ), // callback 'style-settings-admin' // page ); add_settings_field( 'columns_desktop_0', // id 'Columns Desktop', // title array( $this, 'columns_desktop_0_callback' ), // callback 'style-settings-admin', // page 'style_settings_setting_section' // section ); add_settings_field( 'columns_tablet_1', // id 'Columns Tablet', // title array( $this, 'columns_tablet_1_callback' ), // callback 'style-settings-admin', // page 'style_settings_setting_section' // section ); add_settings_field( 'columns_mobile_2', // id 'Columns Mobile', // title array( $this, 'columns_mobile_2_callback' ), // callback 'style-settings-admin', // page 'style_settings_setting_section' // section ); add_settings_field( 'background_color_3', // id 'Background color', // title array( $this, 'background_color_3_callback' ), // callback 'style-settings-admin', // page 'style_settings_setting_section' // section ); add_settings_field( 'text_color_4', // id 'Text color', // title array( $this, 'text_color_4_callback' ), // callback 'style-settings-admin', // page 'style_settings_setting_section' // section ); add_settings_field( 'border_radius_5', // id 'Border radius', // title array( $this, 'border_radius_5_callback' ), // callback 'style-settings-admin', // page 'style_settings_setting_section' // section ); add_settings_field( 'border_color_6', // id 'Border color', // title array( $this, 'border_color_6_callback' ), // callback 'style-settings-admin', // page 'style_settings_setting_section' // section ); add_settings_field( 'title_font_size_7', // id 'Title font size', // title array( $this, 'title_font_size_7_callback' ), // callback 'style-settings-admin', // page 'style_settings_setting_section' // section ); add_settings_field( 'description_font_size_8', // id 'Description font size', // title array( $this, 'description_font_size_8_callback' ), // callback 'style-settings-admin', // page 'style_settings_setting_section' // section ); add_settings_field( 'buttons_font_size_9', // id 'Buttons font size', // title array( $this, 'buttons_font_size_9_callback' ), // callback 'style-settings-admin', // page 'style_settings_setting_section' // section ); add_settings_field( 'custom_css_10', // id 'Custom CSS', // title array( $this, 'custom_css_10_callback' ), // callback 'style-settings-admin', // page 'style_settings_setting_section' // section ); } public function style_settings_sanitize($input) { $sanitary_values = array(); if ( isset( $input['columns_desktop_0'] ) ) { $sanitary_values['columns_desktop_0'] = $input['columns_desktop_0']; } if ( isset( $input['columns_tablet_1'] ) ) { $sanitary_values['columns_tablet_1'] = $input['columns_tablet_1']; } if ( isset( $input['columns_mobile_2'] ) ) { $sanitary_values['columns_mobile_2'] = $input['columns_mobile_2']; } if ( isset( $input['background_color_3'] ) ) { $sanitary_values['background_color_3'] = sanitize_text_field( $input['background_color_3'] ); } if ( isset( $input['text_color_4'] ) ) { $sanitary_values['text_color_4'] = sanitize_text_field( $input['text_color_4'] ); } if ( isset( $input['border_radius_5'] ) ) { $sanitary_values['border_radius_5'] = sanitize_text_field( $input['border_radius_5'] ); } if ( isset( $input['border_color_6'] ) ) { $sanitary_values['border_color_6'] = sanitize_text_field( $input['border_color_6'] ); } if ( isset( $input['title_font_size_7'] ) ) { $sanitary_values['title_font_size_7'] = sanitize_text_field( $input['title_font_size_7'] ); } if ( isset( $input['description_font_size_8'] ) ) { $sanitary_values['description_font_size_8'] = sanitize_text_field( $input['description_font_size_8'] ); } if ( isset( $input['buttons_font_size_9'] ) ) { $sanitary_values['buttons_font_size_9'] = sanitize_text_field( $input['buttons_font_size_9'] ); } if ( isset( $input['custom_css_10'] ) ) { $sanitary_values['custom_css_10'] = esc_textarea( $input['custom_css_10'] ); } return $sanitary_values; } public function style_settings_section_info() { } public function columns_desktop_0_callback() { ?> <select name="style_settings_option_name[columns_desktop_0]" id="columns_desktop_0"> <?php $selected = (isset( $this->style_settings_options['columns_desktop_0'] ) && $this->style_settings_options['columns_desktop_0'] === '4') ? 'selected' : '' ; ?> <option value="4" <?php echo $selected; ?>>4</option> <?php $selected = (isset( $this->style_settings_options['columns_desktop_0'] ) && $this->style_settings_options['columns_desktop_0'] === '3') ? 'selected' : '' ; ?> <option value="3" <?php echo $selected; ?>>3</option> <?php $selected = (isset( $this->style_settings_options['columns_desktop_0'] ) && $this->style_settings_options['columns_desktop_0'] === '2') ? 'selected' : '' ; ?> <option value="2" <?php echo $selected; ?>>2</option> <?php $selected = (isset( $this->style_settings_options['columns_desktop_0'] ) && $this->style_settings_options['columns_desktop_0'] === '1') ? 'selected' : '' ; ?> <option value="1" <?php echo $selected; ?>>1</option> </select> <?php } public function columns_tablet_1_callback() { ?> <select name="style_settings_option_name[columns_tablet_1]" id="columns_tablet_1"> <?php $selected = (isset( $this->style_settings_options['columns_tablet_1'] ) && $this->style_settings_options['columns_tablet_1'] === '3') ? 'selected' : '' ; ?> <option value="3" <?php echo $selected; ?>>3</option> <?php $selected = (isset( $this->style_settings_options['columns_tablet_1'] ) && $this->style_settings_options['columns_tablet_1'] === '2') ? 'selected' : '' ; ?> <option value="2" <?php echo $selected; ?>>2</option> <?php $selected = (isset( $this->style_settings_options['columns_tablet_1'] ) && $this->style_settings_options['columns_tablet_1'] === '1') ? 'selected' : '' ; ?> <option value="1" <?php echo $selected; ?>>1</option> </select> <?php } public function columns_mobile_2_callback() { ?> <select name="style_settings_option_name[columns_mobile_2]" id="columns_mobile_2"> <?php $selected = (isset( $this->style_settings_options['columns_mobile_2'] ) && $this->style_settings_options['columns_mobile_2'] === '2') ? 'selected' : '' ; ?> <option value="2" <?php echo $selected; ?>>2</option> <?php $selected = (isset( $this->style_settings_options['columns_mobile_2'] ) && $this->style_settings_options['columns_mobile_2'] === '1') ? 'selected' : '' ; ?> <option value="1" <?php echo $selected; ?>>1</option> </select> <?php } public function background_color_3_callback() { printf( '<input class="color" type="color" name="style_settings_option_name[background_color_3]" id="background_color_3" value="%s">', isset( $this->style_settings_options['background_color_3'] ) ? esc_attr( $this->style_settings_options['background_color_3']) : '' ); } public function text_color_4_callback() { printf( '<input class="color" type="color" name="style_settings_option_name[text_color_4]" id="text_color_4" value="%s">', isset( $this->style_settings_options['text_color_4'] ) ? esc_attr( $this->style_settings_options['text_color_4']) : '' ); } public function border_radius_5_callback() { printf( '<input class="number" type="number" name="style_settings_option_name[border_radius_5]" id="border_radius_5" value="%s">', isset( $this->style_settings_options['border_radius_5'] ) ? esc_attr( $this->style_settings_options['border_radius_5']) : '' ); } public function border_color_6_callback() { printf( '<input class="color" type="color" name="style_settings_option_name[border_color_6]" id="border_color_6" value="%s">', isset( $this->style_settings_options['border_color_6'] ) ? esc_attr( $this->style_settings_options['border_color_6']) : '' ); } public function title_font_size_7_callback() { printf( '<input class="number" type="number" name="style_settings_option_name[title_font_size_7]" id="title_font_size_7" value="%s">', isset( $this->style_settings_options['title_font_size_7'] ) ? esc_attr( $this->style_settings_options['title_font_size_7']) : '' ); } public function description_font_size_8_callback() { printf( '<input class="number" type="number" name="style_settings_option_name[description_font_size_8]" id="description_font_size_8" value="%s">', isset( $this->style_settings_options['description_font_size_8'] ) ? esc_attr( $this->style_settings_options['description_font_size_8']) : '' ); } public function buttons_font_size_9_callback() { printf( '<input class="number" type="number" name="style_settings_option_name[buttons_font_size_9]" id="buttons_font_size_9" value="%s">', isset( $this->style_settings_options['buttons_font_size_9'] ) ? esc_attr( $this->style_settings_options['buttons_font_size_9']) : '' ); } public function custom_css_10_callback() { printf( '<textarea class="large-text" rows="5" name="style_settings_option_name[custom_css_10]" id="custom_css_10" placeholder=".custom-css{ display: flex; ... }">%s</textarea>', isset( $this->style_settings_options['custom_css_10'] ) ? esc_attr( $this->style_settings_options['custom_css_10']) : '' ); } } if ( is_admin() ) $style_settings = new StyleSettings(); $style_settings_options = get_option( 'style_settings_option_name' ); // Array of All Options $columns_desktop_0 = $style_settings_options['columns_desktop_0']; // Columns Desktop $columns_tablet_1 = $style_settings_options['columns_tablet_1']; // Columns Tablet $columns_mobile_2 = $style_settings_options['columns_mobile_2']; // Columns Mobile $background_color_3 = $style_settings_options['background_color_3']; // Background color $text_color_4 = $style_settings_options['text_color_4']; // Text color $border_radius_5 = $style_settings_options['border_radius_5']; // Border radius $border_color_6 = $style_settings_options['border_color_6']; // Border color $title_font_size_7 = $style_settings_options['title_font_size_7']; // Title font size $description_font_size_8 = $style_settings_options['description_font_size_8']; // Description font size $buttons_font_size_9 = $style_settings_options['buttons_font_size_9']; // Buttons font size $custom_css_10 = $style_settings_options['custom_css_10']; // Custom CSS-
This reply was modified 3 years, 10 months ago by
lucas1559.
Where/how did you try to implement weboccults’ suggestion? I believe what they are suggesting is to initialize and save default option values before anything else is done. Seems like a valid plan to me. This can even be done only once on the plugin’s activation hook. Once default values are saved, there’s not any need to do so again unless there’s some mechanism to completely remove the saved option records.
Your other alternative is to alter the logic used when assigning “selected” attributes. For the default option, assign “selected” if the option is not set OR (if it is set AND the set value === the default value).
-
This reply was modified 3 years, 10 months ago by
The topic ‘Set default value for add_settings_field’ is closed to new replies.