BLOG

wordpressでis_home()、is_page()などでページ判定できないときの対処法

PUBLISHED AT 02/05/2015 / IN CATEGORY web,wordpress

wordpress_wp_reset_query

先ほどwordpressを使った案件の作業をしていたのですが、ちょっとハマってしまった事をメモ書き。

 

wordpressでis_home()関数などを使ってページ判定し、ヘッダーやサイドバーを切り替える事とかあると思うんす。

僕はフッターでjQueryプラグインの読み込みを条件分岐させてたかったので、トップページとそれ以外のページで判定しているのに、トップページ以外でも余計なjsが読み込まれてしまっていました。

 

コードが間違っているのか?

いや、こんな簡単なコード見ればすぐ分かるし間違っていない。

しかもheader.phpで使っているページ判定はきちんと動いている。

 

おかしーなおかしーな、こわいなーこわいなー

って思いながら「wordpress ページ判定」とかでググっても、やっぱり間違ってないんです。

ヘッダーでは判定できて、フッターでは出来ないなんて事あるのか?

 

あれやこれやと調べていると、見つかりました。

 

have_posts()やquery_posts()を使った後にis_home()などのページ判定関数を使うと、きちんと動かない事があるらしい!

 

なるほど、だからヘッダーではきちんと動いていたんですね。

 

で解決法は簡単でした。

判定前にwp_reset_query()を実行すればよいみたいです。

 

<?php
wp_reset_query(); //追加
if(is_home()):
?>
トップページのときの処理
<?php else: ?>
それ以外のページのときの処理
<?php endif; ?>

 

これだけでした。