WordPressのサイドバーを、固定ページ、アーカイブ、ブログ毎に分けたい時ありますよね!そのような時、ウィジェットに新しくサイドバーを追加/登録する方法をご紹介します!
僕は、テーマにtwentyseventeenのchildを使っています。今回、ブログ用のサイドバーを作りたいので、この設定に準じて説明させていただきます。
ウィジェットにサイドバーを追加するためには、次のステップを踏みます。
まずは、sidebar-blog.phpを作ります。
もともとの親テーマにある、sidebar.phpをコピーし、childのフォルダに保存して使えば良いので、超簡単です!
- sidebar.phpをコピーして、sidebar-blog.phpを作ります。-(ハイフン)後の名前は、任意です。用途に応じて決めれば良いでしょう。
- is_active_sidebar()の引数を、functions.phpのregister_sidebarで登録するidに合わせます。’sidebar-4’としています。
- dynamic_sidebar()の引数も’sidebar-4’とします。こちらも上記のidと同じです。
sidebar-blog.phpの内容です。
<?if ( ! is_active_sidebar( 'sidebar-4' ) ) { return; }?> <aside id="secondary" class="widget-area" role="complementary"> <?php dynamic_sidebar( 'sidebar-4' ); ?> </aside><!-- #secondary -->
function.phpの編集
resister_sidebar()で、サイドバーを登録します。twentyseventeenのfunction.phpに、既存のサイドバーを登録している部分がありますので、こちらをコピーしてchildのfunction.phpに下記のように記載しました。変更した部分は、’name’と’id’だけです。そのほかのパラメータは、必要に応じて変更すれば良いと思います。
- nameを、任意の名前にします。Sidebar blogとしています。twentyseventeenの翻訳ファイルに無いと思うので、そのまま表示されると思います。
- idを、sidebar-4とします。なんでも良いのですが、わかりやすいものが良いでしょう。
function.php(childテーマ)内の記述
register_sidebar( array( 'name' => __( 'Sidebar blog', 'twentyseventeen' ), 'id' => 'sidebar-4', 'description' => __( 'Add widgets here to appear in your sidebar.', 'twentyseventeen' ), 'before_widget' => '<section id="%1$s" class="widget %2$s">', 'after_widget' => '</section>', 'before_title' => '<h2 class="widget-title">', 'after_title' => '</h2>', ) );
single.phpの編集
ブログ(投稿)のテンプレートは、single.phpに書かれていますので、こちらを編集します。親テーマからコピーしてきます。名前はそのままでOKです!
- get_sidebar()の引数を”blog”にする。サイドバーのファイル、sidebar-blog.phpの、-(ハイフン)の後の名前を使います。
single.php内の記述
<?php get_header(); ?> <div class="wrap"> <div id="primary" class="content-area"> <main id="main" class="site-main" role="main"> /* 省略 */ </main><!-- #main --> </div><!-- #primary --> <?php get_sidebar("blog"); ?> </div><!-- .wrap --> <?php get_footer();
以上のことをすれば、ウィジェットに自分が登録したサイドバーが表示されていると思います。
まとめ
ウィジェットは、サイドバーに限らず様々な使用方法がありますので、勉強してご紹介していければと思っています!
今日も、訪問してくださり誠にありがとうございます。