「メールアドレスが公開されることはありません」などWordPressコメントフォームの文章を変更する方法

2016年1月6日

「コメントフォームの表示文言を編集したい」

WordPressの標準設定では、コメントフォームの名前やメールアドレスといった各入力欄はシンプルで味気ない表示となっています。

標準設定の「名前」とだけ表示された入力欄では、コメントしようとしたユーザーは入力が必須なのかどうかは最後になってみないと分からないですよね。

未入力でも構わないのなら「名前(無記入可)」なんて表示してあげたほうが親切な表示です。

今回はコメントフォームの入力欄に表示する文言の編集方法を紹介します。

コメントフォームの内部的な構造

WordPressではコメントフォームをフィールドとして管理しています。

具体的には以下のように名前やメールアドレスといった入力欄に対して、それぞれどのようなタグで装飾して表示するかを定義しています。authorが名前、emailがメールアドレス、urlがウェブサイトの入力欄を表しています。

$fields = array(
  'author' => '<p class="comment-form-author">' . '<label for="author">' . __( 'Name' ) . ( $req ? ' <span class="required">*</span>' : '' ) . '</label> ' .
              '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>',
  'email' => '<p class="comment-form-email"><label for="email">' . __( 'Email' ) . ( $req ? ' <span class="required">*</span>' : '' ) . '</label> ' .
             '<input id="email" name="email" ' . ( $html5 ? 'type="email"' : 'type="text"' ) . ' value="' . esc_attr(  $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' /></p>',
  'url' => '<p class="comment-form-url"><label for="url">' . __( 'Website' ) . '</label> ' .
           '<input id="url" name="url" ' . ( $html5 ? 'type="url"' : 'type="text"' ) . ' value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" /></p>',
);

コメントフォームの文言を編集する

「名前」を「名前(無記入可)」に変更する

名前を未入力でも受け付けるのならば、その旨を表示してみましょう。

“single.php”などコメントフォームを表示している部分に以下のコードを直接記載することで機能します。下記のコードの場合、「名前」だった部分が「名前(無記入可)」に変わる以外、標準と何ら変わらない表示となります。

<?php
/* コメントフォーム */
if (comments_open()) {
  $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">' . __( '<b>名前</b>(無記入可)' ) . ( $req ? ' <span class="required">*</span>' : '' ) . '</label> ' .
                  '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>',
      'email' => '',
      'url' => '

' . '

', ), ); // フォーム表示 comment_form($comments_args); } ?>

メールアドレスとウェブサイトの入力欄を消す

次に「名前」を「名前(無記入可)」に変更した上で不要な入力欄を消す方法を紹介します。

今回はメールアドレスとウェブサイトの入力欄をそれぞれ消してみます。

<?php
/* コメントフォーム */
if (comments_open()) {
  $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">' . __( '<b>名前</b>(無記入可)' ) . ( $req ? ' <span class="required">*</span>' : '' ) . '</label> ' .
                  '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>',
    ),
  );
  // フォーム表示
  comment_form($comments_args);
}
?>

ここで行ったことは単純です。

フィールドに対して「名前(author)」の要素のみを定義し、メールアドレスやウェブサイトについての記述を削除しただけです。

そしてカスタマイズしたフィールド情報を

comment_form($comments_args);

にて代入して表示させています。

「コメントを残す」を消す

「コメントを残す」や「メールアドレスが公開されることはありません」といった文言は、WordPress側にてそれぞれ「title_reply」や「comment_notes_before」といった名前で定義されています。

それぞれの文言がどのような名称で定義されているかについては関数リファレンスにて公開されています。基本的に編集方法は以下の方法と同じです。

今回は例として「コメントを残す」という文言の定義を変更してみましょう。

<?php
/* コメントフォーム */
if (comments_open()) {
  echo '<h2 class="sectionTitle">COMMENTS</h2>';
  
  $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">' . __( '<b>名前</b>(無記入可)' ) . ( $req ? ' <span class="required">*</span>' : '' ) . '</label> ' .
                  '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>',
    ),
    'title_reply' => __( '' ),
  );
  // フォーム表示
  comment_form($comments_args);
}
?>

上記のコードを使用すると「コメントを残す」が消えた上で、名前の入力欄は「名前(無記入可)」に変更され、メールアドレスとウェブサイトの入力欄は非表示という状態のコメントフォームとなります。

たとえば他にも「メールアドレスが公開されることはありません」について編集したい場合は、下記のように行を追加していくことで可能です。

    ),
    'title_reply'          => __( '' ),
    'comment_notes_before' => '<p class="comment-notes">' . __( '' ) . ( $req ? $required_text : '' ) . '</p>',
  );

最後に

ほかの多くの項目に比べてやたらと変更方法の複雑なWordPressのコメントフォームのカスタマイズ方法ですが、今回紹介した方法が少しでもカスタマイズの助けとなってくれていれば幸いです。