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()」を外しても、無事動作しました。
こんな凡ミスのせいで、何時間も悩みました。
必ず原因は自分にあるものですね。