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

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

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

if(!is_front_page()):
  if(is_active_sidebar('sidebar')):dynamic_sidebar('sidebar');endif;
endif;

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

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()」を外しても、無事動作しました。

コメントを残す

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