I need help figuring out how the radio button saves it's value in the theme settings.

In my theme I added Radio buttons in the theme customizer. So far they are working great. Although I have one issue. I can't seem to set a default setting for them, so if I install my theme on a new install, or someone else does. Than whatever the radio buttons are for doesn't appear. I am not talking about the default value of the radio button itself, I am talking about the default theme customizers settings value. Here is how I create the radio buttons:

        /** Header button options */

        'default' => 'duplicatebtn',
    ) );

        'type' => 'radio',
        'priority'   => 30,
        'label' => 'Header buttons type',
        'section' => 'mytheme_header',
        'choices' => array(
        'duplicatebtn' => 'Use hero settings',
        'createcustom' => 'Use custom settings(modify below)',
        'hidebtn' => 'Do not display button',

Here is how I set my theme setting defaults. I do this so that when a new install is done the theme looks okay.

function mytheme_get_theme_mods() {
    $defaults = array(
        'mytheme_header_btn_options'     => 'duplicatebtn'

    return $defaults;

So this is my confusion. Even though I tried setting my default to a choice from the array, it does not work. Although when I save a new value from the radio buttons on the theme customizer it works like that. So it clearly has some value just not "duplicatebtn", or maybe it is and I am doing it wrong. Can anyone please help me figure this out?

  • I also had similar problem on one of my theme for setting defaults. I will keep watching this Q.
    – Sisir
    Commented Nov 16, 2013 at 8:13
  • Yea, it is a little confusing. I thought was the way it saves the setting, but that can't be true since the switch that changes the content of each radio case works fine in my theme customizer live preview. Commented Nov 16, 2013 at 18:13
  • Answered in wordpress.stackexchange.com/questions/140435/… Commented Aug 5, 2016 at 13:35

2 Answers 2


It is a long question but it is possible for some developers I would like to give this answer.

Example: I have two choose for my home layout Grid and List and I prefer Grid is default choosing. I should add default value in add_setting simple like this 'default' => 'grid'.

        'sanitize_callback' => 'sanitize_text_field', 
        'default' => 'grid'
    $wp_customize->add_control( 'yourtheme_home_layout_style', array(
        'section'               => 'yourtheme_home_layout_section',
        'label'                 => __( 'Layout Style', 'textdomain' ),
        'type'                  => 'radio',
        'priority'              => 1,
        'choices'               => array(
            'grid'                  => __('Grid', 'textdomain'),
            'list'                  => __('List', 'textdomain'),

If not working wordpress customizer default value from add_setting(); You can use it like this-

<?php echo esc_attr(get_theme_mod('header_btn_options','duplicatebtn'); ?>

Here 1st parameter is Setting id and 2nd parameter is Default value

Hope! it will helpful for you.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.