[WordPress] is_dynamic_sidebar() とis_active_sidebar() ではまった件

夏休みも終わり(一応営業的には・・・ですが)今年はそこそこ日焼けしてきました!

今年の夏は、夏期休暇中もなんだかんだでWordPressと格闘しています。

オリジナルテーマにウィジェット機能を追加して、「ウィジェットに登録されている時は表示」「何も登録されていない時はブロックごと非表示」という箇所を最大で1ページ内に3か所設置するのが目標。

最初は、1か所だけだったので

<?php if ( is_dynamic_sidebar() ) : ?>
<!-- ウィジェットがある場合 -->
<div class="box">
<div class="box-content">
<?php dynamic_sidebar(); ?>
</div>
</div>
<?php else: ?>
<!-- ウィジェットがなかった場合 -->
<?php endif; // end sidebar widget area ?>

こんな感じで問題なかったのですが、複数設置テストしてみたところ、
is_dynamic_sidebar() だと登録されていなくてもブロック要素は表示されてしまうんですね。

あれこれパターンを変えて検証した結果、

<?php if(is_active_sidebar('sidebar-1')) : ?>
<!-- ウィジェットがある場合 -->
<div class="box">
<div class="box-content">
<?php dynamic_sidebar('sidebar-1'); ?>
</div>
</div>
<?php else: ?>
<!-- ウィジェットがなかった場合 -->
<?php endif; // end sidebar widget area ?>

と、
is_dynamic_sidebar()

指定したダイナミックサイドバーが使用中かどうか。
ではなく、
is_active_sidebar()

指定したダイナミックサイドバーが有効かどうか。

を指定すると、表示・非表示の制御が可能になりました。

この案件ではなるべくクライアント様の作業が簡単にできるよう設定していく事が目標なので、ウィジェットに何か登録したときだけ自動的に表示させたかったのです。
しかもレスポンシブ×多言語サイト-_-;

一応形だけは整ったけれど、文字数の制御まではしていないので、
PC、タブレット、スマートフォン・・・とサイズに合わせて設定の微調整が必要。
うーん。。。まだ先は長いかも?

今回はここ数日はまった件についてでした^^;



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です