wp_reset_queryの履歴

wp_reset_queryは今まで使っているクエリを全部一度破棄すること。
なんでこの関数にたどり着いたかというと、footer.phpでis_home()による分岐がが効かない。

下記の分岐がうまくいかない。

<?php if(!(is_home())) : ?>
処理・・・
<?php endif; ?>


header.phpでは効いているはずなのに、なんでfooter.phpでは使えねーんだとかなり憤りを感じてやみくもに調べてみた。

そしたら、こういうことらしい。

sidebar.php などの他のテンプレートファイルによってクエリが実行された場合、元の条件分岐タグは破損してしまいます。例えば、header.php では条件分岐タグが適切に機能するのに、footer.php では正しく機能しないトラブルがよくあります。これを解決するにはフッターで条件分岐タグを使う前に wp_reset_query を実行します:

http://wpdocs.sourceforge.jp/Conditional_Tags#.E3.83.86.E3.83.BC.E3.83.9E.E3.81.AE_footer.php_.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.A7


ってことで、こういうときはリセットしましょう。