サイトアイコン LUCKLOG

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

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

ちょうどそういった対応をしたいと思っていたので、実際に対応しながらメモしておこうと思います。

スポンサーリンク

現在のコメントフォーム

今はこのような状態です。やりたいことは下記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」をバックアップの上お試しください。

それでは、最後までお読みいただきありがとうございました!

スポンサーリンク