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

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

スポンサーリンク

シェアする

コメントを残す

メールアドレスが公開されることはありません。

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