WordPressで「is_front_page()」などの条件分岐タグが効かない!?

WordPressをカスタマイズする時に「is_front_page()」などの条件分岐タグを使うことって多いと思いますが、なぜか、その条件分岐タグがうまくいかないという事態が起こりました。

今回、トップページだけサイドバーを外したいと思い、「footer.php」に下記のように条件分岐をさせていました。

■footer.php
if(!is_front_page()):
  if(is_active_sidebar('sidebar')):dynamic_sidebar('sidebar');endif;
endif;

普段なら、これでうまくいくはずなのですが、今回に限ってうまくいきません。
調べてみると「wp_reset_query();」を条件分岐の前に追記するとよい、という記事を見つけたので、試しにやってみました。

■footer.php
wp_reset_query();
if(!is_front_page()):
  if(is_active_sidebar('sidebar')):dynamic_sidebar('sidebar');endif;
endif;

すると、無事、条件分岐タグがきちんと動作しました。

しかし、なぜこんなことが起こったのだろう?
いつもはうまく行くのに…?

「wp_reset_query()」でリセット処理をすれば直るということは、どこかでリセット処理がされていないのではと思い、ソースを調べてみました。
すると、「query_posts()」を使い、最新5件を取得するところで、「wp_reset_query()」でリセットされていませんでした。
ですので、ここで「wp_reset_query()」を使ってリセットしてあげたら、条件分岐の直前の「wp_reset_query()」を外しても、無事動作しました。

こんな凡ミスのせいで、何時間も悩みました。
必ず原因は自分にあるものですね。

コメントを残す

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