如何在主题定制器中禁用控件?

时间:2013-05-01 作者:user1632018

编辑:我已经重写了这个问题,希望我能从了解主题定制器的人那里得到回复。

我正在试图找出如何禁用Wordpress主题定制器页面中的设置控件。例如:

主题定制器中的一个部分包含一个复选框,用于隐藏或显示英雄容器中的文本。选中后,将隐藏文本。复选框标签显示“隐藏英雄文本”。

在同一部分中,有一个文本框供用户输入他们想要的英雄容器文本。标签上写着“英雄文本”。

我正在试图找出如何禁用文本框(2)当复选框(1)出现时已选中。通过禁用,我指的是使文本框处于非活动状态,以便无法向其中输入任何内容。

有人能解释一下怎么做吗?目前关于主题定制器的信息非常缺乏。我将不胜感激。

2 个回复
SO网友:davidcondrey

I have not tested this yet 但计划很快做类似的事情。。

如果要完全删除默认控件,可以使用此代码。通过搜索与您希望在wp includes/class wp customize manager中定位的控件相匹配的正确控件id,可以找到用于替代“display\\u header\\u text”的适当控件id。php

$wp_customize->remove_control(\'display_header_text\');
Display\\u header\\u text是一个复选框,用于切换是否显示网站标题和标语。

如果(例如)在选中display\\u header\\u text时,您想在主题自定义程序中隐藏站点标题文本框控件,则可以执行以下操作。。

if( get_theme_mod( \'display_header_text\' ) !== \'\') {
    $wp_customize->remove_control(\'blogname\');
} else {
    $wp_customize->add_setting( \'blogname\', array(
        \'default\' => \'default_value\',
    ) );
    $wp_customize->add_control( \'blogname\', array(
        \'label\'   => \'Title\',
        \'section\' => \'title_tagline\',
        \'type\'    => \'text\',
        \'priority\' => 1
    ) );
}
主题定制器将复选框的值存储为数字1(如果选中),如果未选中则为空。因此,上面的代码表示,如果控制是否显示站点标题和副标题的复选框不为空,那么请删除站点标题文本框,这样输入站点标题的选项甚至不可用。但如果复选框为空,则显示文本框。

SO网友:Facundo Farias

如果可接受隐藏文本框,则可以使用active_callback 参数:

function should_display_hero_text() {
    return ! get_theme_mod( \'hide_hero_text\', false );
}

// ...
$wp_customize->add_control(
    \'hide_hero_text\',
    array(
        \'type\' => \'checkbox\',
        // ...
    )
);
$wp_customize->add_control(
    \'hero_text\',
    array(
        \'type\' => \'text\',
        \'active_callback\' => \'should_display_hero_text\',
        // ...
    )
);
这将使hero_text 字段显示和消失取决于hide_hero_text\'s值。

进行输入disabledreadonly 似乎没有记录,但您可能需要查看input_attrs 选项来自WP_Customize_Control::__construct.

结束

相关推荐

Ajax Validation for reCaptcha

背景我有一个registration form 使用AJAX验证jQuery Validation Engine. 表单是使用创建的Theme My Login 和包含reCaptcha 我使用WP-reCAPTCHA.就像其他领域一样,我需要validate reCaptcha using AJAX 也就是说,不刷新整个页面。到目前为止,当验证码没有验证时,我成功地使其工作。但是when it did validate, 即,输入正确,页面刷新,但带有error message 上面说\'That re