やったこと

webサービスを作るときに考えたことを垂れ流します

【Wordpress】記事のコメント一覧に2chみたいに番号を振るよ!

ワードプレスの記事に付けられたコメント一覧に、2ch掲示板っぽく番号を付けるよ!

イメージとしてはこんな感じ・・。

1.名無しさん
 記念カキコ
2.名無しさん
 記念パピコ
3.名無しさん
 記念マキコ

functions.phpに以下のような関数を定義すると、そのコメントの番号を計算することができます!

//コメントIDから番号を計算して返却する
function get_comment_index($comment_id){
  global $wpdb;

  $result = $wpdb->get_results("SELECT * FROM wp_comments WHERE comment_ID='$comment_id'", ARRAY_A);
  if (!count($result)){
    return null;
  }

  $post_id = $result[0]->comment_post_ID;
  $result = $wpdb->get_results("SELECT comment_ID, (SELECT COUNT(*)+1 FROM wp_comments B WHERE B.comment_post_ID='$post_id' AND B.comment_ID < A.comment_ID) AS 'index' FROM wp_comments A WHERE comment_ID='$comment_id'", ARRAY_A);

  if (!count($result)){
    return null;
  }
  return $result[0]['index'];
}


そして、コメント一覧を表示する処理の直前でこの関数をコールして、取得したコメント番号をechoで表示させてやります。

(うちが使っているテーマでは「class-twentytwenty-walker-comment.php」というファイルの中でコメント一覧を表示してた)

 $comment_index = get_comment_index($comment->comment_ID);
echo $comment_index.".";

 printf(
        '<span class="fn">%1$s</span><span class="screen-reader-text says">%2$s</span>',
        esc_html( $comment_author ),
        __( 'says:', 'twentytwenty' )
 );

これで名前の前に「.1」とか「.2」とかの番号が付くようになります!

以上!