WordPressでサイトやブログを作成する上で、
色々なテンプレートファイル内で使用することがあると思いますが、if(is_home())を使っても条件分岐が効かない場合に確認すべきポイントと対処法をまとめました。
「メインループの状態に戻していない」のが原因であることが多い
index.phpやarchive.phpなどでwp_reset_query()が抜けていると、例えばsidebar.phpやfooter.phpの他のテンプレートファイルでif(is_home())などを使おうとしても、条件分岐が効きません。
対処法
以下のWordPress strogxでも書かれている通り、クエリーの改変を戻すために、wp_reset_query() を呼び出し、オリジナルのメインクエリーを復活させる必要があります。
wp_reset_queryが漏れている箇所に直接記述を足してあげれば良いのですが、どこの処理で漏れているのかよく分からない…という場合は、sidebar.phpやfooter.phpのif(is_home())の前に書いてあげても良いかと思います。
1 2 3 4 5 6 |
<?php wp_reset_query();?> <?php if(is_home()): ?> … <?php else: ?> … <?php endif; ?> |
コメント