45式::雑記
45式::雑記は、日々の事を記してないから日記ではなく雑記です。

ウィジェットがないサイドバーを外側ごと表示させない方法

コメント
0件
トラックバック
0件

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]

トラックバックはまだありません。

カテゴリ
アーカイブ
ヘルプ
Feed

フィードとは