WordPressのコメント機能では、気軽にコメントしてもらうために「必須」をはずしたり、メールアドレスの入力自体を削除したりしたいことがあります。
ちょうどそういった対応をしたいと思っていたので、実際に対応しながらメモしておこうと思います。
スポンサーリンク現在のコメントフォーム
今はこのような状態です。やりたいことは下記3点です。
- 必須項目をなくす
- 「メール」と「サイト」の入力項目自体を削除
- 「メールアドレスが公開されることはありません。*が付いている欄は必須項目です」という文言を削除
- 「
では、一つずつ対応していきましょう。
必須項目をなくす
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」はバックアップの上編集してください
メール・サイトが消えた
「メール」も「サイト」も消えてスッキリしました。
\$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に上記を追記すれば「メールアドレスが公開されることはありません。」を削除することができます。「必須項目をなくす」で行った対応と似たような感じです。
こちらも「var_dump(\$defaults)」でチェックしてみると文字列が入っているのが確認できました。
「メール・・・」を削除できた
これでやりたかったことが対応できました。かなりスッキリしました。
まとめ
対応をまとめると、
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」をバックアップの上お試しください。
それでは、最後までお読みいただきありがとうございました!
スポンサーリンク