向主题定制器添加复选框

时间:2012-10-12 作者:dgwyer

当尝试向主题定制器添加复选框时,它似乎是“始终”选中的。如果您试图取消选择它,您就不能,就像有一些JS代码迫使它保持选中状态一样。

我正在使用序列化主题选项,所有内容都已正确连接。代码类似于以下代码(通过“customize\\u register”挂钩触发):

$wp_customize->add_setting( mytheme_options[chk_hide_description], array(
    \'default\'        => false,
    \'type\'           => \'option\',
    \'capability\'     => \'edit_theme_options\' )
);

$wp_customize->add_control( \'display_header_text\', array(
    \'settings\' => mytheme_options[chk_hide_description],
    \'label\'    => __( \'Hide site description\' ),
    \'section\'  => \'title_tagline\',
    \'type\'     => \'checkbox\',
) );
此处报告的问题相同:http://ottopress.com/2012/how-to-leverage-the-theme-customizer-in-your-own-themes/#div-comment-11254.

2 个回复
SO网友:bueltge

复选框是可能的。举个例子,我希望这对你有帮助。

首先,您必须定义设置,通过add_setting, 重要的是参数type 有价值的option. 在此之后,通过add_control并设置参数typecheckbox. 可使用的替代方案select. 如果我通过添加默认值std, 然后使用它,也不使用此参数。如果我添加值为1和0的choices参数,则Alternative也可以正常工作。但是如果我只将参数设置为checkbox. 您可以在我的项目中找到源代码,请参阅下面的链接。

您还可以调试wp includes/class wp customize控件中246行的值字符串输出。php;也许会有帮助。

调试:

    case \'checkbox\':
        var_dump( $this->value() );
示例:

    // Add settings for output description
    $wp_customize->add_setting( $this->option_key . \'[echo_desc]\', array(
        \'default\'    => $defaults[\'echo_desc\'],
        \'type\'       => \'option\',
        \'capability\' => \'edit_theme_options\'
    ) );

    // Add control and output for select field
    $wp_customize->add_control( $this->option_key . \'_echo_desc\', array(
        \'label\'      => __( \'Display Description\', \'documentation\' ),
        \'section\'    => \'title_tagline\',
        \'settings\'   => $this->option_key . \'[echo_desc]\',
        \'type\'       => \'checkbox\',
        \'std\'        => \'1\'
    ) );
查看此源的结果。screenshot depicting the checkbox in the WordPress customizer

你在我的主题中找到了一个工作结果Documentation, hosted on Github.

SO网友:David Gard

我也遇到了类似的问题\'type\' => \'option\' 对于add_setting 是原因。

删除这个解决了我的问题,下面是我目前正在使用的,效果很好。

$wp_customize->add_section(\'footer_social_media_section\' , array(
    \'title\'     => __(\'Footer Social Media\', \'dd_theme\'),
    \'priority\'  => 1020
));

$wp_customize->add_setting(\'show_footer_facebook\', array(
    \'default\'    => \'1\'
));

$wp_customize->add_control(
    new WP_Customize_Control(
        $wp_customize,
        \'show_footer_facebook\',
        array(
            \'label\'     => __(\'Show Facebook Link\', \'dd_theme\'),
            \'section\'   => \'footer_social_media_section\',
            \'settings\'  => \'show_footer_facebook\',
            \'type\'      => \'checkbox\',
        )
    )
);

结束

相关推荐