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

WordPress
スポンサーリンク

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 strogxでも書かれている通り、

クエリーの改変を戻すために、wp_reset_query() を呼び出し、オリジナルのメインクエリーを復活させる必要があります。


wp_reset_queryが漏れている箇所に直接記述を足してあげれば良いのですが、どこの処理で漏れているのかよく分からない…という場合は、sidebar.phpやfooter.phpのif(is_home())の前に書いてあげても良いかと思います。

コメント

タイトルとURLをコピーしました