WordPress のコメント欄で コメントとピンバックを分けて表示させる

最終更新日

Comments: 0

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; ?>

typecomment が入っているとコメントのみのリストが、ping だとピンバックのリストを出力できます。

ここでコメント・ピンバックを別々のフィールドで出力するのですが、先程取得した、コメント数・ピンバック数のカウントを使用することで、それぞれ空のフィールドが作られてしまうことを阻止します。

あとはコメント / ピンバックの切替用ボタンを作って、Javascript で表示切り替えが出来るようにすれば完璧です。

Coldbox テーマにてこの実装をしているので、参考までにどうぞ。

coldbox/comments.php at master · Mirucon/coldbox

フリーランスで WordPress, フロントエンド開発をするエンジニア (お仕事募集中)。最近は WordPress テーマの作成やレビュー、翻訳などやってます。フロントが好き。Twitter: @mirucons

スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

コメントする

スパム対策の為、日本語が含まれない投稿は無視されますのでご注意ください。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください