WordPressコメント入力フォームの「名前」「メールアドレス」「サイト」のテキストを変更するカスタマイズ方法

サブサイトのフォーラムにコメント入力欄のカスタマイズについて以下のような質問がありました。

コメント欄のカスタマイズでこちらにたどり着きました。

やりたいことはシンプルに、コメント入力欄や名前入力欄の上部のテキストを「コメントをどうぞ」→任意のテキストに変更したい「名前」→「お名前」や「ニックネーム」、「ペンネーム」などサイトによって任意に変更したいという感じです。

こういった、コメント欄カスタマイズ方法の質問は、これまで何度かあるので一定の需要があるのかと、この機会にやり方を記しておこうと思います。

今回のカスタマイズで変更できる部分は、以下のテキスト部分です。

コメント入力フォームの変更するテキスト

スポンサーリンク
レクタングル(大)広告

主な手順

コメント欄テキストのカスタマイズ方法の主な手順は以下です。

  1. テーマ内からcomment_form関数が使われている場所を探す
  2. comment_form関数部分を編集する

今回は、Wordpress公式テーマのTwenty Sixteenを例にカスタマイズ方法を紹介したいと思います。

今回は、Twenty Sixteenのカスタマイズ方法ですが、基本的にどのテーマでも同じ手順で変更できるかと思います。

テーマ内からcomment_form関数が使われている場所を探す

まずは、テーマ内でcomment_form関数が使われている部分を探します。

探すのには、テキストエディターのGrep検索などで「comment_form」というテキストを検索してみてください。

Sublime Textでの検索方法

僕が使用しているSublime Text 3だと、メインメニューの「Find」から「Find in Files(Ctrl + Shift + F)」から、Grep検索フォームを表示させて、「comment_form」を検索してください。

Sublime Textで「comment_form」をGrep検索する

すると、以下のような検索結果が表示されます。

Sublime TextでGrep検索結果

Twenty Sixteenの場合は、comments.phpテンプレートに記入されていました。

EmEditorでの検索方法

一応、日本語エディターのEmEditorでの方法も書いておきます。

EmEditorメインメニューの「検索」から「ファイルから検索(Ctrl + Shift + F)」を選択してください。

EmEditorでGreg検索

大抵のプログラム用エディターには、この一括検索機能がついているかと思います。

comment_form関数部分を編集する

今回の例として使用しているTwenty Sixteenの場合は、comments.phpテンプレートにcomment_form関数が記入されていました。

なので、親テーマのcomments.phpをコピーして、子テーマフォルダ直下に貼り付けてください。そして子テーマにコピペしたファイルをエディターなどで開いてください。

ここで、「なぜ子テーマにファイルをコピーするのか?」については以下を参照してください。

Wordpress既存テーマをカスタマイズするなら子テーマを使うべきと思います。これは、Wordpress codexにある...
親テーマを直接カスタマイズする場合は、以降はcomments.phpを直接編集してください。

大抵のテーマの場合は、comment_form関数は、以下のように利用されています。

comment_form();

この部分を、以下のようにコピペで書き換えます。

$name = 'お名前';
$mail = 'あなたのメアド';
$site = 'あなたのサイト';
$comments_args = array(
  'fields' => apply_filters( 'comment_form_default_fields', array(

    'author' =>
      '<p class="comment-form-author">' .
      '<label for="author">'.$name.'</label> ' .
      ( $req ? '<span class="required">*</span>' : '' ) .
      '<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">'.$mail.'</label> ' .
      ( $req ? '<span class="required">*</span>' : '' ) .
      '<input id="email" name="email" type="text" value="' . esc_attr(  $commenter['comment_author_email'] ) .
      '" size="30"' . $aria_req . ' /></p>',

    'url' =>
      '<p class="comment-form-url"><label for="url">'.$site.'</label>' .
      '<input id="url" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) .
      '" size="30" /></p>'
    )
  ),
);
comment_form($comments_args);

先頭の方にある$name、$mail、$siteのテキストについては好みのものに変更してください。

comment_form関数に引数があらかじめ設定されていた場合

今回の例として使用しているTwenty Sixteenの場合、comment_form関数に以下のような引数が設定されていました。

comment_form( array(
    'title_reply_before' => '<h2 id="reply-title" class="comment-reply-title">',
    'title_reply_after'  => '</h2>',
) );

こういった場合は、引数にもともとあった設定項目も取り入れて、以下のように記入します。

$name = 'お名前';
$mail = 'あなたのメアド';
$site = 'あなたのサイト';
$comments_args = array(
    'title_reply_before' => '<h2 id="reply-title" class="comment-reply-title">',
    'title_reply_after'  => '</h2>',
  'fields' => apply_filters( 'comment_form_default_fields', array(

    'author' =>
      '<p class="comment-form-author">' .
      '<label for="author">'.$name.'</label> ' .
      ( $req ? '<span class="required">*</span>' : '' ) .
      '<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">'.$mail.'</label> ' .
      ( $req ? '<span class="required">*</span>' : '' ) .
      '<input id="email" name="email" type="text" value="' . esc_attr(  $commenter['comment_author_email'] ) .
      '" size="30"' . $aria_req . ' /></p>',

    'url' =>
      '<p class="comment-form-url"><label for="url">'.$site.'</label>' .
      '<input id="url" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) .
      '" size="30" /></p>'
    )
  ),
);
comment_form($comments_args);

動作確認

今回のカスタマイズで、デフォルトの日本語環境だと「名前」、「メールアドレス」、「サイト」であったコメント入力フォームのテキストが以下のように変更されました。

コメントフォームカスタマイズ後

まとめ

コメントフォームのカスタマイズは、通常のテンプレートファイルのカスタマイズと違い、ちょっと分かりづらいかもしれません。

ただ、やり方さえ分かってしまえば、comment_form関数で指定する引数の内容を指定するだけなので、いろいろなカスタマイズができるかと思います。

このコメントフォームのカスタマイズについては、WordPress Codexの関数リファレンス/comment formがサンプルも豊富で分かりやすいかと思います。

僕も今回は、Codexの「デフォルト $args 配列」項目にあるデフォルト配列をコピペして不要な部分を削除し、必要な部分だけ編集しました。

$comments_args = array(
  'id_form'           => 'commentform',
  'id_submit'         => 'submit',
  'title_reply'       => __( 'Leave a Reply' ),
  'title_reply_to'    => __( 'Leave a Reply to %s' ),
  'cancel_reply_link' => __( 'Cancel Reply' ),
  'label_submit'      => __( 'Post Comment' ),

  'comment_field' =>  '<p class="comment-form-comment"><label for="comment">' . _x( 'Comment', 'noun' ) .
    '</label><textarea id="comment" name="comment" cols="45" rows="8" aria-required="true">' .
    '</textarea></p>',

  'must_log_in' => '<p class="must-log-in">' .
    sprintf(
      __( 'You must be <a href="%s">logged in</a> to post a comment.' ),
      wp_login_url( apply_filters( 'the_permalink', get_permalink() ) )
    ) . '</p>',

  'logged_in_as' => '<p class="logged-in-as">' .
    sprintf(
    __( 'Logged in as <a href="%1$s">%2$s</a>. <a href="%3$s" title="Log out of this account">Log out?</a>' ),
      admin_url( 'profile.php' ),
      $user_identity,
      wp_logout_url( apply_filters( 'the_permalink', get_permalink( ) ) )
    ) . '</p>',

  'comment_notes_before' => '<p class="comment-notes">' .
    __( 'Your email address will not be published.' ) . ( $req ? $required_text : '' ) .
    '</p>',

  'comment_notes_after' => '<p class="form-allowed-tags">' .
    sprintf(
      __( 'You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes: %s' ),
      ' <code>' . allowed_tags() . '</code>'
    ) . '</p>',

  'fields' => apply_filters( 'comment_form_default_fields', array(

    'author' =>
      '<p class="comment-form-author">' .
      '<label for="author">' . __( 'Name', 'domainreference' ) . '</label> ' .
      ( $req ? '<span class="required">*</span>' : '' ) .
      '<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', 'domainreference' ) . '</label> ' .
      ( $req ? '<span class="required">*</span>' : '' ) .
      '<input id="email" name="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', 'domainreference' ) . '</label>' .
      '<input id="url" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) .
      '" size="30" /></p>'
    )
  ),
);

この、デフォルト配列さえ分かっていれば、いろいろと応用が利くかと思います。

『WordPressコメント入力フォームの「名前」「メールアドレス」「サイト」のテキストを変更するカスタマイズ方法』へのコメント

  1. 名前:ARIA 投稿日:2017/06/20(火) 17:12:16 ID:794a2ffaa

    はじめまして、ARIAと申します。
    最近ブログを始めて、comments.phpを作成するのに大変手間取っていたので、
    このサイトのおかげですごく助かりました。
    他にもいろいろな記事を参考にさせていただいています。
    ありがとうございます!

  2. アバター画像 名前:わいひら 投稿日:2017/06/20(火) 19:15:58 ID:699a6a63e

    はじめまして。
    コメントフォームのちょっとした文字変更なのに、かなり大掛かりになってしまいますよね;
    僕なんかは、すぐやり方を忘れてしまうので、自分用に書き残しておいたものみたいなものですが、記事がお役にたったようで良かったです!

  3. 名前:JIN 投稿日:2021/11/11(木) 15:49:47 ID:4888a21ee

    こんにちは、素晴らしい記事を見つけてしまいました。
    初期の引数が、
    comment_form(args);
    となっていた場合、どのように記載すれば$comments_args中に取り込めるのでしょうか?
    phpの知識がなく、、、すみません。
    よろしければご教授いただけたら幸いです。

  4. 名前:JIN 投稿日:2021/11/11(木) 16:35:42 ID:4888a21ee

    重ねてのコメント失礼します。逆に
    $comments_args
    の中に「’fields’ =>…….」の構文を入れてあげたらうまくいきました。
    お騒がせしてすみませんでした。