ワードプレス - サイドバーがそれをロードすることなく、空であるかどうかを知る方法は?

StackOverflow https://stackoverflow.com/questions/2468813

質問

私はDIVでサイドバーをラップしようとしている、とサイドバーが空の場合はDIVを表示するべきではありません。

しかし、私のようなコードを使用することはできません。

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

が空でない場合、それはDIV前にサイドバーをロードするように、任意のアイデア?

役に立ちましたか?

解決

あなたは常に出力バッファリングを使用することができます。出力バッファリングがオンのとき、通常は画面に表示されるものではなく、バッファに格納されています。その後、何かがあなたの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>";
}

他のヒント

試します:

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

あなたは、ワードプレス is_dynamic_sidebar()に使用することができます。機能ます。

登録されているすべてのサイドバーにウィジェットが含まれている場合は、

これはtrueを返します。それ以外の場合はfalseを返します。

例:

<?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でサイドバーを識別するために使用します。

お知らせます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top