web-dev-qa-db-ja.com

カスタム投稿アーカイブページでカスタムサイドバーを取得する

私は "bibliographies"と呼ばれるカスタム投稿タイプとそれに対応するarchive-bibliographies.phpファイルを使って投稿のリストを表示します。このページに、このページに固有のサイドバーを追加したいので、先に進んで次のような新しいサイドバーを登録しました。

// Register Bibliography Sidebar
function bibliography_sidebar() {
    register_sidebar( array(
        'name' => 'bibliography_sidebar',
        'id' => 'bibliography_sidebar',
        'description' => __( 'Widgets in this area will be shown on the bibliography sidebar.', 'theme-slug' ),
        'before_widget' => '<li id="%1$s" class="widget %2$s">',
        'after_widget'  => '</li>',
        'before_title'  => '<h2 class="bibliography_sidebar">',
        'after_title'   => '</h2>',
    ) );
}
add_action( 'widgets_init', 'bibliography_sidebar' );

次に、archive-bibliopgraphies.phpファイルで、サイドバーを次のように呼び出してみます。

get_sidebar('bibliography_sidebar');

管理者側に新しいサイドバーが表示され、そこにウィジェットを追加することができますが、フロントエンドに表示されるのはメインのサイドバーだけで、「bibliography_sidebar」サイドバーはありません。

私がここで見逃しているアイデアはありますか?

4

get_sidebar($name)はテンプレートsidebar-{$name}.phpをロードします。 sidebar-{$name}.phpが存在しない場合は、sidebar.phpのロードにフォールバックします。

特定のサイドバーを作成するには、このコードを使ってテーマにファイルsidebar-bibliography_sidebar.phpを作成します。

<?php

if ( is_active_sidebar( 'bibliography_sidebar' ) ) {
    dynamic_sidebar( 'bibliography_sidebar' );
}
2
mmm