sidebar.phpでis_homeなどの条件分岐が効かない時の覚え書き。

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などの条件分岐が効かない時の覚え書き。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です