我已经为我的主题添加了几个定制选项,我正在(尝试)使用active_callback
与的参数$wp_customiser->add_section()
.
首先,这似乎工作得很好。我正在使用的活动回调包括is_search
, is_archive
和is_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>
显示网站预览。
最合适的回答,由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
}
}
});