akipanmanさん、こんにちは。
index.php、single.phpに関わらず、そのままではhave_commentsは使えません。
comments_template関数を実行する際、テンプレートを読み込む直前にコメントの取得をするような仕組みとなっているので、それ以降でないとhave_commentsは使えないのです。
index.phpでコメントを表示する方法ですが、
<?php $withcomments = true; comments_template(); ?>
と記述いただければ、投稿やページ以外のテンプレートでもコメントが表示されるようになります。
デフォルトのコメントテンプレートだと不都合な場合は、
<?php $withcomments = true; comments_template( '/index_comments.php' ); ?>
とパラメータを指定すれば、任意のテンプレートを利用することが可能です。
あるいは、
<?PHP if ( $comments = get_approved_comments( $post->ID ) ) : ?>
<ol class="commentlist">
<?php wp_list_comments();?>
</ol>
<?php endif; ?>
と、index.php内で完結させてしまうことも可能です。
(上記例では、ログイン状態にかかわらず承認済みのコメントしか表示されませんが。。。)
(@akipanman)
14年、 4ヶ月前
index.php内で <?php have_comments() ?> とやっても false が帰ってきてしまい、コメントを取得することができません。
have_comments() は single.php 内でしか使用出来ないのでしょうか?
だとすれば、コメントをindex.phpのループ内に表示するにはどのようにしたら良いでしょうか?
ご教授いただけましたら幸いです。