• RSS

[WP]sidebar.phpやfooter.phpでis_home()が効かない場合の対処法

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

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())の前に書いてあげても良いかと思います。



  • このエントリーをはてなブックマークに追加
  • follow us in feedly

コメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください