Is_active_侧边栏()总是返回FALSE

时间:2013-10-11 作者:Howdy_McGee

我从来没有is_active_sidebar() 为了工作,无论侧边栏中是否有小部件,我总是返回false。目前,我正在为每个顶级页面创建边栏:

http://pastebin.com/fX3Rv20f

我创建自己的小部件:

http://pastebin.com/Bz9hv41z

我正在测试侧栏是否像这样处于活动状态:

if(is_active_sidebar(get_the_title()))
    echo \'active\';
else
    echo \'not active\';
即使我手动输入标题:is_active_sidebar(\'Test\'); 它总是返回false。我是否使用了条件错误?是否需要添加某种设置?为什么会is_active_sidebar() 失败

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

这个is_active_sidebar(\'Test\'); 如果使用了正确的缓动阀,则功能正常工作。

我认为问题在于,您正在这样构造提要栏ID:

$sidebarID = preg_replace("/[\\s_]/", "-", strtolower($page->post_title));
然后预编sidebar- 对它。。。

register_sidebar(array(  
                      \'name\' => $page->post_title,  
                      \'id\'   => \'sidebar-\'.$sidebarID, 
                      //
但当你检查时,你使用的是未修改的标题作为slug。。。

if(is_active_sidebar(get_the_title()))
您需要修改您正在检查的代码,以获得正确的边栏段塞。你需要始终如一。

Edit: 如上所述,“如果slug 虽然法典确实声明“Name”是一个有效的参数值,但使用该名称是行不通的,至少在我尝试使用它时是行不通的。概念证明(主要是从法典中复制的):

$args = array(
    \'name\'          => \'My Sidebar\',
    \'id\'            => \'my-sidebar-id\',
    \'description\'   => \'\',
    \'class\'         => \'\',
    \'before_widget\' => \'<li id="%1$s" class="widget %2$s">\',
    \'after_widget\'  => \'</li>\',
    \'before_title\'  => \'<h2 class="widgettitle">\',
    \'after_title\'   => \'</h2>\' 
); 
register_sidebar($args);
使用上面代码注册的侧栏和侧栏中的小部件,以下返回false.

var_dump(is_active_sidebar(\'My Sidebar\'));
使用ID时返回正确的结果--true:

var_dump(is_active_sidebar(\'my-sidebar-id\'));
我还没有做足够的研究来确定抄本是否错误,或者核心是否存在缺陷。然而,在任何一种情况下,使用未规范化的数据(如帖子名称)都可能是一个坏主意。

结束

相关推荐

Widgets in the loop if active

我正在尝试将一个小部件作为“第一个帖子”,如果它处于活动状态。。然后让帖子继续。。它可以工作,但第一篇帖子消失了,第二篇帖子成为小部件后的第一行。。看不出我做错了什么。。正如你所看到的,我已经有一个小部件显示在帖子之间。<?php if (have_posts()) : ?> <?php $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1; ?> <?php $i=1;?>