WordPressのコメントフォーム修正

当サイトでご覧いただける表示内容の管理にはWordPressっていうシステムを使っています。

このシステムはブログなどの投稿ページでコメントを書こうとすると、標準では記入項目の一つとして「サイト」っていう欄が表示されるんですが、これって無くてもいいんじゃないの?

あと、冒頭の「メールアドレスが~」っていう説明のところには、もしプライバシーポリシーのページを用意しているサイトなら、ここにその要約や参照リンクなんかを追加したいっていうリクエストがあるんじゃないかな?って思っちゃいます。

ってなわけで、コメントフォームの変更に挑戦してみましたっ!

標準のコメントフォーム

Wordpress標準のコメントフォーム
標準コメントフォームの修正対象個所

「サイト」の欄を隠すだけであれば、WordPressのカスタマイズ設定の追加CSSに、以下を追加するだけで実現できます。

CSS
.comment-form-url{ display:none; }

ですが、これだけでは、「次回コメントを~」のところの説明には、あいかわらず「サイトを保存する。」って表示されたまんまなんですよ。

また、冒頭の「メールアドレスが公開されることは~」というメッセージの前後に手を加えることも、追加CSSの設定だけでは無理そうなんです。

そこで、意を決して、後でご紹介するようなコード修正での対応に挑戦したら、右(スマホでご覧の方は下)のようなフォームに変更することができちゃいました!

修正したコメントフォーム

修正したコメントフォーム
修正したコメントフォームの修正箇所

コード修正は、Wordpressやテーマなどのバージョンアップに備えるため、オリジナルのコードには手を付けないで、子テーマを用意しその中のfunction.phpファイルに変更する関数のフィルターフックを追加(add_filter)します。

今回手を加えたのは、次の2つの関数です。

① comment_form_default_fields()

ここでは、css設定に拠らずにサイト欄を表示にするとともに、get_locale()関数で識別できる表示中の言語に応じて、「次回のコメントで」使用するため~」というメッセージからサイトの文字を外すよう修正しています。

② comment_form_defaults()

ここでは、表示中の言語に応じて、冒頭に表示されるメッセージの方を修正しています。

①と②の処理をどちらかの関数でまとめてできないか試してみましたが無理そうでしたので、別々に行っています。

PHP
add_filter('comment_form_default_fields', function($fields) {
  // 「サイト」入力欄を非表示にする。
  unset($fields['url']);
  // 「サイト」の文字を cookieメッセージからも取り去る。
  $cookies = $fields['cookies'];
  switch(get_locale()) {  
    case 'ja':   // 日本語の場合
      $cookies = str_replace('、サイト','',$cookies);
      break;
    case 'en_GB': // 英語の場合
      $cookies = str_replace(', email, and website',' and email',$cookies);
      break;
    default:
      break;
  }
  $fields['cookies']=$cookies;
  return $fields;
});

add_filter('comment_form_defaults', function($fields) {
  switch(get_locale()) {
    case 'ja': // 日本語の場合
      $add_note = 'ご記入いただく個人情報の取り扱いについては<a href="' . home_url('/privacy-policy') . '">プライバシーポリシー</a>をご参照ください。';
      break;                                       
    case 'en_GB': // 英語の場合
      $add_note = 'Regarding to handling of enterd personal information, refer <a href="' . home_url('/privacy-policy') . '">Privacy Policy</a> page.';
      break;
    default:
      break;
  }
  $dst_tag = '<span id="email-notes">';
  $fields['comment_notes_before'] = str_replace($dst_tag, $dst_tag . $add_note . '</br>', $fields['comment_notes_before']) ;
  return $fields;
});

※下記に表示される、実際の当サイトのコメントフォームでは迷惑投稿を防止するため、上記の修正とは別にプラグインによる文字認証機能も追加してあります。

コメントを残す

ご記入いただく個人情報の取り扱いについてはプライバシーポリシーをご参照ください。
メールアドレスが公開されることはありません。
が付いている欄は必須項目です

CAPTCHA