Check if sidebar is rendered?

时间:2015-04-13 作者:Johan Dahl

我想检查前端是否有呈现的边栏,如果有,则输出一些主体类,以便我可以以不同的方式设置页面样式。我尝试使用is\\u active\\u侧边栏,但如果侧边栏包含某个小部件(处于活动状态),则返回true-我想检查页面上是否存在它。我该怎么做?

我的代码如下所示:

在我的单曲里。php

<?php get_sidebar(); ?>
在我的侧边栏中。php

if ( ! is_active_sidebar() ) {
    // Add something here perhaps?
    return;
}
?>

<div class="sidebar widget-area" role="complementary">
    <?php dynamic_sidebar(); ?>
</div><!-- #secondary -->

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

如果您的某个边栏小部件区域是特定于页面的,那么我认为您只需要将类加载到这些页面。如果是,请使用is_page() 有了它:

if( is_page(\'that-page\') && is_active_sidebar(\'your-sidebar\') ) {
     $class = \'your-class \';
}
如果除首页以外的所有内页都是这样,请使用:

if( !is_front_page() && is_active_sidebar(\'your-sidebar\') ) {
     $class = \'your-class \';
}
我认为这就是PHP的方式。

SO网友:farinspace

我确实认为这样做的正确方法是使用WordPress api(在php中),它将在内容发送到浏览器之前放置所有主体类。

然而,这里有一种不同的方法,它使用javascript片段并检查get_sidebar 实际上被称为。

add_action( \'get_sidebar\', \'my_get_sidebar\' );
function my_get_sidebar() {
    if ( is_active_sidebar( \'your-sidebar\' ) ) {
        ?><script>document.body.className += \' with-sidebar\';</script><?php
    }
}

结束

相关推荐

Sidebar的小部件可以从内容区检索信息吗?

最近,我收到了我们的wordpress程序员关于这个问题的回复。我们在内容区有一个地图,显示每个地区的实体数量。然后,我们在侧栏区域中有搜索表单小部件。我们希望这两个人合作。如果我在搜索表单中更改某些内容并按search->则地图将动态响应,反之亦然。反之亦然=如果我选择地区,该地区将在侧栏的表单元素中更改。我们被告知目前还不可能做到这一点。在侧边栏的主要内容区搜索结果(公司、地址等)的其他子页面上,我们计划有一个显示这些搜索结果位置的小地图。编码器声称侧边栏的内容,也就是小地图的小部件,无法找到结