「webで何か」作るブログ

35歳という遅すぎるスタートをなんとかする為のブログです。基本的に自分にとっての役立ちメモ。

comment.phpの作成

今回はWordPressのコメント機能を利用する方法を実践した時のことを記します。まあ、このブログはWordPressで記事を管理しているとはいえ、最終的には静的
化してgithub.ioへアップロードしてるので、使用していないのですが。次に作る時のために。

WordPressのコメント機能の概要

WordPressのコメントには大きく二つの機能が存在しています。一つがコメントを投稿する機能、もう一つがコメントを表示する機能です。それぞれを呼び出すための関数をテンプレートファイルに書き込むことで設置することになります。

コメント投稿フォームに必要なもの

コメントを投稿可能にするにはコメント投稿フォームが必要になります。これが前述したコメントを投稿する機能です。ここで必要になるのが

  • comments.php
  • comments_template関数

です。

comments.phpの準備と中身

comments.phpには、まずcomment_form関数が必要になります。この関数を利用することで、WordPressがデフォルトで用意しているコメント投稿フォームを呼び出すことができます。

使い方

<?php comment_form( $args, $post_id ); ?>

デフォルトの設定

 
<?php comment_form(); ?>

関数リファレンス/comment form より

パラメータは様々用意されているので、表示はかなり柔軟コントロール可能です。このテーマではサイトURLの欄を消したりしています。

続いて、投稿されたコメントを表示するためのwp_list_commentをこんな感じで書き込んでおきます。

<?php if ( have_comments() ) : ?>
 <ol class="commentlist">
 <?php wp_list_comments(); ?>
 </ol>
 <?php endif;?>

コメントフォームを呼び出す

作成したコメントフォームを任意のファイルで呼び出します。実際にはsingle.phpとpage.phpでしょうか。

呼び出しにはcomments_template()を利用します。コメントはメインに関連するコンテンツなので、asideに書き込んでいます。

コード

comments.php

 

  <?php
  $commenter = wp_get_current_commenter();
  $req = get_option( 'require_name_email' );
  $aria_req = ( $req ? " aria-required='true'" : '' );
  $comments_args = array(
  'fields' => array(
  'author' =>
  '<p class="comment-form-author"><label for="author">' . __( 'お名前', 'domainreference' ) . '</label> ' .
  ( $req ? '<span class="required">*</span>' : '' ) .
  '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) .
  '" ' . $aria_req . ' /></p>',
   
  'email' =>
  '<p class="comment-form-email"><label for="email">' . __( 'Email', 'domainreference' ) . '</label> ' .
  ( $req ? '<span class="required">*</span>' : '' ) .
  '<input id="email" name="email" type="text" value="' . esc_attr( $commenter['comment_author_email'] ) .
  '"' . $aria_req . ' /></p>',
   
  'url' =>'',
  )
  );
  ?>
  <?php comment_form($comments_args); ?>
  <?php if ( have_comments() ) : ?>
  <ol class="commentlist">
  <?php wp_list_comments(); ?>
  </ol>
  <?php endif;?>
view rawcomments.php hosted with ❤ by GitHub

 

WordPress commnet.phpの作成