WordPress のコメント欄で コメントとピンバックを分けて表示させる
WordPress にあるコメント機能ですが、そこにはコメントだけでなくピンバックも混ざっていてとても見にくかったりします。
そこでこのカスタマイズを使うと、コメント・ピンバックをそれぞれ別々の場所に出力できるようになります。
comments.phpへの記述
まずは、記事へのコメント・ピンバックがそれぞれ存在するかを確認します。
これには、get_comments()
関数を使います。
$comments_count = get_comments( array( 'status' => 'approve', 'post_id'=> get_the_ID(), 'type'=> 'comment', 'count' => true, ) );
$pings_count = get_comments( array( 'status' => 'approve', 'post_id'=> get_the_ID(), 'type'=> 'pings', 'count' => true, ) );
$comments_count
変数にはコメントのみの数が、$pings_count
変数にはピンバックとトラックバックの数が代入されます。
そして、コメント・ピンバックを分けて表示するにはwp_list_comments()
関数の引数の値を使用します。
<?php if ( $comments_count > 0 ) : ?>
<ol id="comment-list">
<?php wp_list_comments( array( 'type' => 'comment', 'avatar_size' => 42 ) ); ?>
<?php if ( get_comment_pages_count() > 1 ): ?>
<div class="comment-pages"><?php paginate_comments_links( array( 'prev_text' => '«', 'next_text' => '»' ) ); ?></div>
<?php endif; ?>
</ol>
<?php endif; ?>
<?php if ( $pings_count > 0 ) : ?>
<ol id="ping-list">
<?php wp_list_comments( array( 'type' => 'pings', 'avatar_size' => 50, 'short_ping' => true ) ); ?>
</ol>
<?php endif; ?>
type
に comment
が入っているとコメントのみのリストが、ping
だとピンバックのリストを出力できます。
ここでコメント・ピンバックを別々のフィールドで出力するのですが、先程取得した、コメント数・ピンバック数のカウントを使用することで、それぞれ空のフィールドが作られてしまうことを阻止します。
あとはコメント / ピンバックの切替用ボタンを作って、Javascript で表示切り替えが出来るようにすれば完璧です。
Coldbox テーマにてこの実装をしているので、参考までにどうぞ。
スポンサーリンク