2020.03.29

WordPressでコメント一覧の表示テンプレートを自作した内容に変更する方法

こんにちは、webエンジニアのゾノ( @ozonosho )です。

さて、今回は記事ではWordPressでコメント一覧の表示テンプレートを自作した内容に変更する方法を紹介いたします。

一般的なテーマの場合、Wordpressのコメント表示テンプレートはテーマ直下にある「comments.php」というファイルに記載されています。

↓のようなコードが多いです。

<?php if(have_comments()): ?>
	<div class="comment-pagenation">
		全<?php echo get_comments_number(); ?>件
	</div>
	<ol class="comments-list">
		<!-- コメント一覧を表示する関数 -->
		<?php wp_list_comments();?>
	</ol>
<?php else : ?>
	<p>
		まだコメントがありません。
	</p>
<?php endif; ?>

注釈を入れてありますがコメント一覧の表示にはWordPress固有の関数「wp_list_comments」が用いられています。

この「wp_list_comments」はそのまま使うと決まったテンプレートでしか表示できないのですが、下記の手順を踏むことで自作したテンプレートを表示させることができます。

  1. 表示テンプレートを自作して関数化する
  2. 自作した表示テンプレートの関数名をwp_list_commentsの引数として渡す

そのため、この順で実装してみましょう。

①表示テンプレートを自作して関数化する

まずは自作したい表示テンプレートをfunctions.phpに関数として作ります。

一例を挙げると、下記のようなコードになります。

function mytheme_comments($comment, $args, $depth) {
  $GLOBALS['comment'] = $comment;
  ?>
  <li>
    <div class="comment-header">
      <!-- コメント投稿日時 -->
      <p class="comment-date"><?php echo get_comment_date(); ?></p>
      <!-- コメント投稿者 -->
      <p class="comment-author"><?php echo $comment->comment_author; ?></p>
    </div>
    <div class="comment-content">
      <!-- コメント本文 -->
      <?php comment_text(); ?>
    </div>
  </li>
<?php
}

ここでは「mytheme_comments」と名付けた関数を用意しましたが、関数名も中身も自由に設定いただいて大丈夫です。

②自作した表示テンプレートの関数名をwp_list_commentsの引数として渡す

自作した表示テンプレートを使うのは簡単で、コメント一覧表示用の関数「wp_list_comments」に先ほど作成した自作テンプレートの関数名「mytheme_comments」を渡してあげるだけでOKです。

<?php wp_list_comments('callback=mytheme_comments');?>

callback=の値に関数名を入れてあげてください。

最初に紹介した「comments.php」のコードを例にすると、↓のようなコードにすれば自作した表示テンプレートを利用できます。

<?php if(have_comments()): ?>
	<div class="comment-pagenation">
		全<?php echo get_comments_number(); ?>件
	</div>
	<ol class="comments-list">
		<!-- コメント一覧を表示する関数 -->
		<?php wp_list_comments('callback=mytheme_comments');?>
	</ol>
<?php else : ?>
	<p>
		まだコメントがありません。
	</p>
<?php endif; ?>

おわりに

以上、今回の記事ではWordPressのコメント欄にカスタムフィールド項目を追加する方法を紹介させていただきました。

当サイトではWordPressのカスタマイズ依頼を請け負っています。実現したい機能・要望がある方はぜひ下記ページよりご相談ください。

あなたのサイトに理想の機能を実装!WordPressカスタマイズサービス

本サービスはあなたのWordPressサイトに理想の機能を実装するサービスとなります。 どのような機能・要望でも実現可能です! Wo......

→この記事を読む