• 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']) : ''
    		);
    	}
Viewing 3 replies - 1 through 3 (of 3 total)
  • 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.

    Thread Starter lucas1559

    (@lucas1559)

    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.
    Moderator bcworkz

    (@bcworkz)

    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).

Viewing 3 replies - 1 through 3 (of 3 total)

The topic ‘Set default value for add_settings_field’ is closed to new replies.