wordpressテーマ内sidebar.phpで条件分岐タグis_home()がきかない

wp-adminの設定>表示設定でフロントページを固定ページにして、その固定ページテンプレートのテーマファイル内でquery_posts()を使うなどして特定あるいは複数のカテゴリーを指定していると、テーマファイルheader.phpで条件分岐タグis_home()は使えても、sidebar.phpでis_home()がきかなくなるという現象が起こるようです。
これには非常に困ったのですが、こちらのページなどに解消法がありました。

フロントページ専用に指定している、テンプレート内でsidebar.phpを読み込んでいる箇所
[sourcecode language=’php’][/sourcecode]
の直前にwp_reset_query()を足して
[sourcecode language=’php’][/sourcecode]
としたら解決しました。このトラブルはバグではなく、query_posts()でカテゴリを指定してしまうとこれをやらないといけないみたいです。場所はquery_posts()のループが終わる箇所でいいと思うのですが、こちらのほうがひとまずは直感的に分かりやすいかと。
ほかの条件分岐でもこのようなことは起こるのではないかと推測できるので、sidebar.phpやfooter.phpで条件分岐の動作がおかしなときはこれをやってみるといいかもしれません。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です