この記事は2018年2月14日に書かれたもので、内容が古い可能性がありますのでご注意ください。
WordPressでページごとに表示を分けたい時にis_page関数を使おうとしたのですが、なぜか判定が効かなくなるときがありました。
そんなときの対処法を紹介します。
判定が効かなくなる原因
have_post関数や、query_post関数を使った後にis_page関数を呼び出すと、条件分岐が正常に行われないため。
確かに、have_post関数や、query_post関数を使う前にis_page関数を使用しても正常に動いていました。
同じページで同じソースなのに1箇所は正常で、もう1箇所が不具合が起きていたので、原因が分からず困っていました。。
対処法
<?php wp_reset_query(); ?>
if文の前にクエリをリセットさせる処理を加えます。
if文と組み合わせるとこのようになります。
<?php wp_reset_query(); if( is_page() ) { // ページに表示させたい処理 } ?>
is_page()以外のis_home()などでも同様の事が起こる可能性があるので、この方法を試してみてください。