コメント一覧をサイドバーに表示する

実現したいこと

個々の投稿の一覧ではなく、全コメントの一覧の上位数件を表示する、いわゆる「新着コメント」。
コメントへの返信が明確にわかるように、階層構造を持たせたい。
下の画像がその完成イメージ。

 sidebar.phpへの記述

sidebar.phpの任意の位置へ下記のコードを記述する。

<?php
$arg = array(
	'per_page' => 20,// 1ページに表示するコメントの数
	'max_depth' => '3',// コメントの階層
	'type' => 'comment',// 表示するコメントの種類
	'reverse_children' => true,// trueでコメントの下に子コメント(返信)を新しい順に表示
	'callback' => 'my_comment',// 各コメントの開始タグと内容を表示するカスタム関数の名前
);
wp_list_comments($arg, get_comments());
?>

「wp_list_comments()」 は投稿や固定ページのコメントの一覧を表示するテンプレートタグ。
第一引数はパラメーター(配列)。
「callback」で任意のカスタム関数を指定することにより、表示を自由に操ることができる。
第二引数は戻り値(配列)。いずれもオプションで、省略時はwordpressの内部機能が使用される。ここではコメントのリストを取得する関数「get_comments() 」を使用。引数を与えないことでブログ全体(特定の投稿ではなく)からのコメントを得ることができる。

functions.phpへの記述

「wp_list_comments()」のパラメータで指定したコールバック関数「my_comment」を、functions.phpの任意の場所に記述する。

//コメント一覧用の表示を提供するコールバック関数
function my_comment($comment) {
     ?>
    <li <?php comment_class(); ?>>
    	<a href="<?php echo get_permalink($comment->comment_post_ID); ?>#comment-<?php comment_ID();?>">
		<?php 
			if($comment->comment_parent != 0){
				echo '<i class="fa fa-level-down fa-rotate-180" aria-hidden="true"></i>';
			}
		?>
		<i class="fa fa-user"></i>     
		<?php echo get_comment_author(); ?> さんのコメント
		 (<?php comment_date('Y年n月j日', get_comment_ID()); ?>)<br />
		<?php
			$post_data = get_post($comment->comment_post_ID);
			echo $post_data->post_title;
		?>
		<br />
		
			<?php
				$my_comment_content = strip_tags(get_comment_text());
				if(mb_strlen($my_comment_content,"UTF-8")>100) {
					$my_comment_content = mb_substr($my_comment_content,0,100);
					$my_comment_content .= '...';
				}
			?>
			<i class="fa fa-commenting"></i>
			<?php echo $my_comment_content; ?>
		</span>
	</a>

	<?php
}