【WordPress】コメントフォームからメールアドレスなどを削除する方法

fWordpressのコメント機能なんですが、気軽にコメントしてもらうために、「必須」ではないようにしたり、メールアドレスの入力自体を削除したりしたいことがあります。

実際に消したい自分のサイトがあったので、そちらを対応しながらメモしておこうと思います。

現在のコメントフォーム

今はこのような状態です。やりたいことは下記3点です。

  • 必須項目をなくす
  • 「メール」と「サイト」の入力項目自体を削除
  • 「メールアドレスが公開されることはありません。*が付いている欄は必須項目です」という文言を削除
  • 「 

必須項目をなくす

引用:Wordpress

WordPressの管理画面の「設定」>「ディスカッション」を開きます。

入力を必須にするのチェックを外す

引用:Wordpress

コメントの投稿者の名前とメールアドレスの入力を必須にする」にデフォルトでチェックが入っているので、クリックしてチェックを外します。

引用:Wordpress

同ページ下部の「変更を保存」をクリックして設定完了です。

*もコメントも消えた

「*」も消えた上に、コメントの「*が付いている欄は必須項目です」の部分も消えてくれました。

必須項目が1つ以上ある場合のみ表示する作りになっていたんですね。助かりますね。

残り

後は、下記3点を解決すればOKです。

  • 「メール」と「サイト」の入力項目自体を削除
  • 「メールアドレスが公開されることはありません。」という文言を削除
  • 「 

入力項目自体を削除

// コメントフォームからメール・サイトを削除
function comment_form_remove_item($arg) {
  $arg['email'] = ''; // メール削除
  $arg['url'] = ''; // サイト削除
  return $arg;
}
add_filter('comment_form_default_fields', 'comment_form_remove_item');

functions.phpに上記を追記すれば「メール」「サイト」を削除することができます。
※「functions.php」はバックアップの上編集してください

メール・サイトが消えた

「メール」も「サイト」も消えてスッキリしました。

comment_form_remove_itemの引数「$arg」について

$argを「var_dump($arg)」でチェックしてみるとメールとサイトが消せる理由が分かりました。

「名前」も、「チェックボックス(次回のコメント・・・)」も消すことができそうです。

(参考)どちらかだけ削除したい場合

▼「メール」だけを削除したい場合

// コメントフォームからメール・サイトを削除
function comment_form_remove_item($arg) {
  $arg['email'] = ''; // メール削除
  return $arg;
}
add_filter('comment_form_default_fields', 'comment_form_remove_item');

$arg[‘email’]にだけ空文字を代入すればOKです。

▼「サイト」だけを削除したい場合

// コメントフォームからメール・サイトを削除
function comment_form_remove_item($arg) {
  $arg['url'] = ''; // サイト削除
  return $arg;
}
add_filter('comment_form_default_fields', 'comment_form_remove_item');

$arg[‘url’]にだけ空文字を代入すればOKです。

残り

後は、下記2点を解決すればOKです。

  • 「メールアドレスが公開されることはありません。」という文言を削除

チェックボックス「次回のコメントで・・・」の文字列を変更

先ほどvar_dump($arg)でチェックしたcomment_form_remove_itemの引数「$arg」を改めて見てみると(上の画像)、「 次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。」の文字列も変更できそうです。

文字列置換

// コメントフォームからメール・サイトを削除
function comment_form_remove_item($arg) {
  $arg['email'] = ''; // メール削除
  $arg['url'] = ''; // サイト削除
  $arg['cookies'] = str_replace('、メールアドレス、サイト', '', $arg['cookies']); // 文字列置換
  return $arg;
}
add_filter('comment_form_default_fields', 'comment_form_remove_item');

先ほどfunctions.phpに追加したソースに「\$arg[‘cookies’] = str_replace(‘、メールアドレス、サイト’, ”, \$arg[‘cookies’]);」を追記します。
※「functions.php」はバックアップの上編集してください

「 次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。」から「、メールアドレス、サイト」を削除すればOKなので、「str_replace」を使って空文字に置換しました。

文字列を変更できた

無事変更できました。同じように置換すれば好きな文言に変更できると思います。

「メールアドレスが公開されることはありません。」を削除

// 「メールアドレスが公開されることはありません。」を削除
function comment_notes_before_remove($defaults){
  $defaults['comment_notes_before'] = '';
  return $defaults;
}
add_filter( "comment_form_defaults", "comment_notes_before_remove");

functions.phpに上記を追記すれば「メールアドレスが公開されることはありません。」を削除することができます。「必須項目をなくす」で行った対応と似たような感じです。

こちらもdumpでチェック

こちらも「var_dump($defaults)」でチェックしてみると文字列が入っているのが確認できました。

「メール・・・」を削除できた

これでやりたかったことが対応できました。かなりスッキリしました。

まとめ

引用:Wordpress

WordPressの管理画面の「設定」>「ディスカッション」で「コメントの投稿者の名前とメールアドレスの入力を必須にする」のチェックを外して、

// コメントフォームからメール・サイトを削除
function comment_form_remove_item($arg) {
  $arg['email'] = ''; // メール削除
  $arg['url'] = ''; // サイト削除
  $arg['cookies'] = str_replace('、メールアドレス、サイト', '', $arg['cookies']); // 文字列置換
  return $arg;
}
add_filter('comment_form_default_fields', 'comment_form_remove_item');

// 「メールアドレスが公開されることはありません。」を削除
function comment_notes_before_remove($defaults){
  $defaults['comment_notes_before'] = '';
  return $defaults;
}
add_filter( "comment_form_defaults", "comment_notes_before_remove");

functions.phpに上記を追記すればOKです。

慣れていない方は「functions.php」を触るのに少し抵抗があるかもしれませんが、比較的簡単に対応できました。
※「functions.php」はバックアップの上編集してください