query_posts()を利用すると、is_single()が動作しない
Wordpressで一瞬はまったのでメモ。
single.phpもcategory.phpもindex.phpもすべて同一のテンプレートファイルから記事のループを呼び出していたら、単一記事のページでis_single()が動作せず。
記事ループ部分修正前
<?php query_posts( 'cat=-3' ); if (have_posts()) : while (have_posts() ) : the_post(); (中略) if(is_single()): ?> echo "<p>hogehoge</p>"; endif; endwhile; wp_reset_query(); endif; ?>
原因はquery_posts()だった。single.phpのみ記事読み込み部分をテンプレートから呼び出すのをやめ、直接query_posts()を削除したループを書き込んでみたら動作した。
記事ループ部分修正後
<?php if (have_posts()) : while (have_posts() ) : the_post(); (中略) if(is_single()): ?> echo "<p>hogehoge</p>"; endif; endwhile; wp_reset_query(); endif; ?>