wordpressでコメントが表示されない時の対処法
2014年11月18日 wordpress
【PR】当サイトにはアフィリエイト広告が含まれています。
このサイトを作っている時に、
- どう見てもcomments.phpの中の記述は間違っていないのに、コメントが表示されない!!
- コメントの数はちゃんと表示されている!
- 同じcomments.phpの中に書いた
<?php comment_form(); ?>
は表示されている!
という事態が発生し、丸1日色々しらべたり悩んだりした結果、思わぬところでアッサリと解決したので防備録的に残しておきます。
まず、comments.phpの中身です。
1 2 3 4 5 6 7 8 9 10 |
<?php comment_form(); ?> <?php if( have_comments() ): ?> <div id="comment-area"> <h3 id="comments"></h3> <ol class="commets-list"> <?php wp_list_comments( ); ?> </ol> </div> <?php endif; ?> |
どう見ても間違っていませんよね?というか、間違いようがないですよね?
最初、この記述が悪いのかな~と思って散々悩みましたが、<?php comment_form(); ?>
と書いた、コメント欄だけはちゃんと表示されていました。
また、コメントが取得されていないのかなと思い、コメント数を表示するコードを書き加えてみたところ、コメント数は無事に拾われていました。
なぜ、コメントだけが表示されないの!?
どうやら<?php wp_list_comments( ); ?>
だけがおかしいんじゃないか、と当たりをつけて調べてみたところ、こちらで解決方法が紹介されていました。
Wordpreeフォーラム⇒https://wordpress.org/support/topic/have_comments-help
どうも、comments.phpではなく、出力先のsingle.phpのインクルードタグに問題があったようです。
私はコメントテンプレートを固定ページと投稿ページで分けようと思っていたので、コメントテンプレートをcomments.phpとcomments-post.phpの2種類準備していました。
single.phpに
1 |
<?php include( TEMPLATEPATH . '/comments-post.php' ); ?> |
というインクルードタグを書いていたのですが、どうもwp_list_comments( );
は、
1 |
<?php comments_template(); ?> |
このタグでないと動かないらしいのです!
なぜ<?php comments_template(); ?>
じゃないと動かないのか、フォーラムのこちらのページで議論されていました。
「get_commentsなどを用いてコメントを取得し、得られた結果を第2引数として wp_list_comments に指定すれば、comments.php 以外でも使えます」だそうです。
http://ja.forums.wordpress.org/topic/23248
第2引数とかが難しそうだったので、コメントテンプレートを使い分けるのは諦め、おとなしくコメントテンプレートをcomments.phpひとつに絞りました。
single.phpのインクルードタグを
1 |
<?php comments_template(); ?> |
に書き換えたところ、あっさりとコメントが表示されました!
【PR】当サイトにはアフィリエイト広告が含まれています。
[…] 参考URL:https://cthuwebdice.com/wordpress/wordpress-comment/ […]