未使用`active_allback`显示定制器部分

时间:2015-12-08 作者:David Gard

我已经为我的主题添加了几个定制选项,我正在(尝试)使用active_callback 与的参数$wp_customiser->add_section().

首先,这似乎工作得很好。我正在使用的活动回调包括is_search, is_archiveis_single, 因此,我希望在最初进入customiser时,这些部分会被隐藏。

然而,当我实际查看任何这些模板时,都不会出现相关部分。

下面是我的代码示例,我缺少什么?

$wp_customise->add_section(\'section_template_single\' , array(
    \'title\'             => __(\'Single Links\', $this->text_domain),
    \'priority\'          => 10,
    \'panel\'             => \'panel_templates\',
    \'active_callback\'   => \'is_single\'
));
更新我在站点上没有激活的插件,控制台(Firebug和Chrome开发工具)报告没有JS错误。

我运行的是4.4-rc1版本,但现在我正在运行4.4的完整版本。

根据指向这篇文章的评论,我已经升级了代码,但问题仍然存在。

已更新的实例$wp_customise->add_section() -

$wp_customise->add_section(\'section_template_single\' , array(
    \'title\'             => __(\'Single Links\', $this->text_domain),
    \'priority\'          => 10,
    \'panel\'             => \'panel_templates\',
    \'active_callback\'   => array(&$this, \'_check_is_single\')
));
活动回调函数-

public function _check_is_single(){
    return is_single();
}
通过输出活动回调的结果,似乎customiser实际上只是在页面加载时引用它,而不是在<iframe> 显示网站预览。

2 个回复
最合适的回答,由SO网友:David Gard 整理而成

在做了很多拉扯头发、咒骂之后,我妈妈会感到震惊,一些完全可以接受的男人哭了,我终于找到了问题所在。

正如我在更新后的问题中提到的,Firefox(Firebug)或Chrome(开发者工具)都没有报告JS错误,但这个问题可以在自定义JS脚本中找到。

简而言之,我有一个导航菜单,每当用户单击菜单以外的任何地方时,它都会被隐藏。在第一个实例中,我使用了2个事件处理程序来确保页面以我想要的方式进行响应-

document 并隐藏菜单,在导航菜单中检测单击并停止事件传播,从而确保不会触发上述单击事件处理程序

this.navigation.on(\'click\', function(e){
   e.stopPropagation(); 
});
一旦我发现了问题,我就着手寻找一种替代方法,这让我震惊to this Stack Overflow question 这建议寻求类似功能的用户实现这个精确的解决方案。很简单,是的,但正如大多数公认的答案所述,使用这一行代码肯定会产生意想不到的后果。

所以following the link in the most accepted answer, 我现在已经更新了我的代码(如果有人感兴趣,请参见下面的代码),谢天谢地,定制者现在正在按预期工作。

/**
 * Handle clicks away from the navigation menu
 * Ignore clicks within the navigation menu, unless it\'s within the \'Search\' box
 */         
$(document).on(\'click\', function(e) {

    if(!$(e.target).closest(t.navigation).length    // The click is anywhere outside of the navigation container...
        || $(e.target).closest(t.search).length){   // ...or within the search container nested within the navigation container...

        if(t.navigation.hasClass(\'open\')){
            t.navigation.removeClass(\'open\');   // Remove the \'open\' class from the navigation element
            t.menuButton.toggleClass(\'active\'); // Toggle he \'active\' class on the menu button element
            t.subMenu.css(\'height\', \'0\');       // Set the height of the sub-menu to 0
        }

    }

});

SO网友:Megan Rose

is\\u single template标记采用可选参数,因此不适用于活动回调。请尝试以下操作:

function callback_single() { return is_single(); }

$wp_customize->add_section(\'section_template_single\' , array(
    \'title\'             => __(\'Single Links\', $this->text_domain),
    \'priority\'          => 10,
    \'panel\'             => \'panel_templates\',
    \'active_callback\'   => \'callback_single\'
));
您还可以使用“wp\\u customize”而不是“wp\\u customize”

资料来源:http://ottopress.com/2015/whats-new-with-the-customizer/

相关推荐

Optimize shortcode callbacks

我创建了一个插件,在我的WordPress站点中添加了一些短代码。但我是一个PHP新手,所以我相信它可能有一些错误或优化它的方法。它工作正常,显然没有问题。内存使用率为00.04MB。你能看看吗?非常感谢!add_action( \'wp_enqueue_scripts\', \'prefix_add_my_stylesheet\' ); function prefix_add_my_stylesheet() { // Respects SSL, Styl