ウィジェットがないサイドバーを外側ごと表示させない方法
WordPressのサイドバーは出力する事を前提としたコーディングが推奨されている、らしいです。
少なくともWordPress Codex 日本語版にはそう書かれています。
静的なサイドバーを表示するかどうかを決定するのに、返り値を使用すべきです。こうすることで、ウィジェットプラグインがアクティブでない場合にも、テーマがきちんと表示されるようにできます。致命的なエラーを防ぐために、以下のように使用することをお勧めします。
<ul id="sidebar"> <?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?> <li>{static sidebar item 1}</li> <li>{static sidebar item 2}</li> <?php endif; ?> </ul>
この書き方が、私は好きではないのです。
例えばwp.Vicuna.excにはheaderとfooterというサイドバーがありますが、それらは以下のような記述で出力を行っています。
<div id="header_bar" align="center">
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('header') ) : ?>
<?php endif; ?>
</div>
この記述、サイドバーにウィジェットがない場合はこんな出力になります。
<div id="header_bar" align="center">
</div>
う、美しくない。
必要がない時には何一つ出力しない、そんな記述を私はしたいのです。
というわけで、素人ながら何とかやってみました。
<?php if ( function_exists('dynamic_sidebar') && is_active_sidebar('header') ) : ?>
<div id="header_bar" align="center">
<?php dynamic_sidebar('header') ?>
</div>
<?php endif; ?>
これで出力結果は望み通りになりました。
is_active_sidebar
は数字でしか指定できないので注意です。
is_active_sidebar
はサイドバー名、ID、番号での指定が可能です。
align="center"
が美しくない、という安いツッコミはスルーです。
追伸
記事を書いている途中に寝落ちしてました。
見苦しい状態のまま記事を公開して申し訳ありませんでした。
さらに、寝落ちする前にコピペ対象を間違って、改造例の失敗作が公開されてました。
ちなみに、失敗作ではis_dynamic_sidebar
を使おうとしていましたが、動作結果がどうも希望通りにならなかったのでis_active_sidebar
を使う事にしました。
コメント[0]
コメント投稿フォーム
コメントを投稿するにはJavaScirptが必要です。ブラウザのJavaScriptを有効にしてください。
トラックバック[0]
トラックバックはまだありません。
コメントはまだありません。