[WP]sidebar.phpやfooter.phpでis_home()が効かない場合の対処法
スポンサード
wp_reset_query()が抜けていると、例えばsidebar.phpやfooter.phpの他のテンプレートファイルでif(is_home())などを使おうとしても、条件分岐が効きません。
スポンサード
WordPressでサイトやブログを作成する上で、is_home()
やis_page()
などの条件分岐タグは便利なので、色々なテンプレートファイル内で使用することがあると思いますが、if(is_home())を使っても条件分岐が効かない場合に確認すべきポイントと対処法をまとめました。
「メインループの状態に戻していない」のが原因であることが多い
index.phpやarchive.phpなどでquery_posts()
を使った処理をした後、wp_reset_query()でメインループの状態に戻しているかどうかをまずは確認します。wp_reset_query()が抜けていると、例えばsidebar.phpやfooter.phpの他のテンプレートファイルでif(is_home())などを使おうとしても、条件分岐が効きません。
対処法
WordPress Codexでも書かれている通り、クエリーの改変を戻すために、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; ?> |
スポンサード
コメント