WordPress - 如何在不加载侧边栏的情况下知道侧边栏是否为空?

时间:2010-03-18 09:55:25

标签: php wordpress wordpress-theming

我正在尝试用DIV包装侧边栏,如果侧边栏是空的,则不应显示DIV

但我不能使用像

这样的代码
if(dynamic_sidebar(1))
{
  echo '<div>';
  dynamic_sidebar(1);
  echo '</div>';
}

因为它会在DIV之前加载侧边栏,如果它不是空的,有什么想法吗?

3 个答案:

答案 0 :(得分:2)

尝试:

if ( is_active_sidebar(1) )
{
  echo '<div>';
  dynamic_sidebar(1);
  echo '</div>';
}

答案 1 :(得分:2)

您始终可以使用输出缓冲。当输出缓冲打开时,通常会回显到屏幕的任何内容都会存储在缓冲区中。然后,您可以在输出div标签之前测试缓冲区中是否有任何内容。

ob_start();
dynamic_sidebar(1);
$sidebar = ob_get_clean();  // get the contents of the buffer and turn it off.
if ($sidebar) {
    echo "<div>" . $sidebar . "</div>";
}

答案 2 :(得分:2)

您可以使用WordPress is_dynamic_sidebar();功能

如果任何已注册的侧边栏包含小部件,则返回true;否则是假的。

示例:

<?php if(is_active_sidebar('my-sidebar') ) { ?>

<div class="about-us">

    <?php dynamic_sidebar('my-sidebar'); ?>

</div>

<?php } ?>

这是我从functions.php

运行的小部件区域/侧边栏注册脚本
function foxinni_widgets_init() {

    register_sidebar( array(
      'name' => 'My Sidebar',
      'id' => 'my-sidebar',
      'description'   => '','before_widget' => '','after_widget'  => '','before_title'  => '','after_title'   => '',
    ) );

}
add_action( 'widgets_init', 'foxinni_widgets_init' );

请注意,我使用字符串my-sidebar按ID标识侧边栏。