サイドバーを表示したり作成するときに使うWordPress関数をまとめておきます。
single.phpやpage.phpで見かけるget_sidebarはサイドバーを表示する関数です。パラメータを省略して「get_sidebar();」と呼び出すとサイドバーのデフォルトテンプレート「sidebar.php」が読み込まれます。
sidebar.phpとは別のサイドバーテンプレートを読み込みたい場合は「get_sidebar(テンプレート);」のように指定して「sidebar-テンプレート.php」を読み込むことができます。
たとえば、「get_sidebar( ‘front’ );」と実行すればsidebar-front.phpが読み込まれます。
sidebar.phpに書かれている典型的なコードは次のようになります。Twenty Twelveの例です。
<?php if ( is_active_sidebar( 'sidebar-1' ) ) : ?> <div id="secondary" class="widget-area" role="complementary"> <?php dynamic_sidebar( 'sidebar-1' ); ?> </div><!-- #secondary --> <?php endif; ?>
is_active_sidebarを使ってサイドバー「sidebar-1」に何かウィジェットが入っているか調べて、何か入っていればdynamic_sidebarで表示しています。
この「sidebar-1」はシステムで管理するサイドバーウィジェットエリアの名称で、テーマの作者がregister_sidebarを使ってfunctions.phpに定義するのが一般的です。Twenty Twelveでもfunctions.phpの241行目以降に次のように記述されています。
register_sidebar( array( 'name' => __( 'Main Sidebar', 'twentytwelve' ), 'id' => 'sidebar-1', 'description' => __( 'Appears on posts and pages except the optional Front Page template, which has its own widgets', 'twentytwelve' ), 'before_widget' => '<aside id="%1$s" class="widget %2$s">', 'after_widget' => '</aside>', 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>', ) );
「Main Sidebar」は翻訳ファイルtwentytwelve-ja.poによって「メインサイドバー」と翻訳されます。結果として、Twenty Twelveで「外観」-「ウィジェット」メニューを開くと「メインサイドバー」が使えるようになっています。
自作のテーマでサイドバーを使うために
まとめると、自作のテーマでサイドバーを使うには、言うまでもありませんが自分で準備する必要があります。
- まずは、functions.phpでregister_sidebarを使ってサイドバーエリアを定義します。
- サイドバーテンプレート(例:sidebar.php、sidebar-abcdefg.php)の中でdynamic_sidebarを使ってサイドバーエリアに格納されたウィジェットを表示します。
- 固定ページや投稿、アーカイブなどのテンプレートでget_sidebarを使ってサイドバーテンプレートを読み込んで、それぞれのページに必要なサイドバーを表示します。