sidebar.phpでウィジェットを使い分ける場合、今まではsidebar-index.phpとか、sidebar-category.phpとか、別のファイルを複製して、その中で呼び出すウィジェットを変更してました。
ただ、この方法だとファイルの数が増えてしまい、面倒くさい上、中身は呼び出すウィジェットの名前しか変わらない。
さらに、呼び出し元のテンプレートでも
とかに変更しなくてはならず、条件分岐をすることに。
処理としては簡単なはず・・と if (is_home())とそれ以外で分けようとしたら、何故かis_homeが効かない。
ひたすら調べること30分。簡潔に説明しているページがありました。
「sidebar.phpやfooter.phpでis_homeなどの条件分岐が効かない」
条件分岐のifの前にリセット処理をしなくてはいけなかったようです。
普通は
<?php if(is_home()): ?> //homeの時の処理。フロントページを指定している場合はis_front_page() <?php else: ?> //home以外の時の処理 <?php endif; wp_reset_query(); ?>
としがちだけど、
こっちにしたらバッチリ動きました。
<?php wp_reset_query(); if(is_home()): ?> //homeの時の処理。フロントページを指定している場合はis_front_page() <?php else: ?> //home以外の時の処理 <?php endif; ?>
今回はウィジェットを切り替えたかったので、最終的なコードはこっち。
<?php wp_reset_query(); if(is_home()): ?> <?php if ( is_active_sidebar( 'sidebar-1' ) ) : ?> <div id="secondary" class="widget-area" role="complementary"> <?php dynamic_sidebar( 'sidebar-1' ); ?> </div><!-- #secondary --> <?php endif; ?> <?php else: ?> <?php if ( is_active_sidebar( 'sidebar-2' ) ) : ?> <div id="secondary" class="widget-area" role="complementary"> <?php dynamic_sidebar( 'sidebar-2' ); ?> </div><!-- #secondary --> <?php endif; ?>
ひとつ勉強になりました。
2 thoughts on “sidebar.phpでis_homeなどの条件分岐が効かない時の覚え書き。”