footer.php内でis_front_page()を使って、トップページのみ読み込むコンテンツを設置したかったのですが、なぜか条件分岐タグが効かなくてうまく表示されないという事象に遭遇しました。
結構ハマってしまったのですが、無事解決したので、条件分岐タグが効かない時の対処法についてご紹介したいと思います。
WordPressで条件分岐タグが効かない時の対処法
footer.phpに以下のような条件分岐を記述していました。
<?php if(is_front_page()): ?> トップページだけに表示するコンテンツ <?php endif; ?>
最初はちゃんと動作していたのですが、テーマのトップページを作成中に急に表示されなくなりました。そこで、トップページ内の記述を少しずつ削除しながら確認したら、トップページ内に記事一覧のループ処理があると条件分岐タグが効かなくなるようでした。
ループ処理が原因で条件分岐タグが効かない時は、条件分岐の前にwp_reset_query()を追加して、リセットをしてあげます。
<?php wp_reset_query(); if(is_front_page()): ?> トップページだけに表示するコンテンツ <?php endif; ?>
これで無事条件分岐タグが動作するようになりました。
あとがき
原因にたどり着くまでは結構悩んでしまいましたが、たったの1文追加するだけで解決しちゃいました。
ループの最後にwp_reset_postdata()を入れていたので、リセット処理はされているものと思っていましたが、同じページに条件分岐させる時はwp_reset_query()も必要なんですね。勉強になりました。