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」はそのまま使うと決まったテンプレートでしか表示できないのですが、下記の手順を踏むことで自作したテンプレートを表示させることができます。
- 表示テンプレートを自作して関数化する
- 自作した表示テンプレートの関数名を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のカスタマイズ依頼を請け負っています。実現したい機能・要望がある方はぜひ下記ページよりご相談ください。