WordPressサイトのコメント欄では、「ディスカッション」設定で「コメントの投稿者の名前とメールアドレスの入力を必須にする 」にチェックを付けていると名前とメールアドレスの2つが入力必須になります。
ただ、「メールアドレスまで入力してコメントするのは気が引けるのでは…」ということで、名前を必須、メールアドレスは任意にする方法について調べてみました。
「ディスカッション」設定の変更が必要
コメントのメールアドレスを任意項目にする…ということについて調べてみると、「ディスカッション」設定にある「コメントの投稿者の名前とメールアドレスの入力を必須にする 」のチェックを外すということが多く挙げられていました。
ただ、今回は名前の入力は必須にしたいので、この設定にチェックを付けたままやる方法がないか調べてみました。
pre_comment_on_post
アクションを使う方法を紹介したトピック(2012年頃)もあったのですが、少なくともWordPress 4.9.8ではこのアクションではタイミングが遅いようでした。
メールアドレスと名前のチェックを行う前に、メールアドレスの入力がなければ仮アドレスを入れる…ようなことはできないようです。
コメントのメールアドレスだけ任意入力にしたい場合は、『「コメントの投稿者の名前とメールアドレスの入力を必須にする 」のチェックを外し、名前の入力チェックを追加する』というカスタマイズをする必要があります。
名前の入力チェックを追加
「コメントの投稿者の名前とメールアドレスの入力を必須にする 」のチェックを外すと名前が未入力でもコメント投稿できてしまうので、名前の入力チェックを追加します。
下記のコードをfunctions.php
に追加して下さい。
/**
* コメント送信時の名前の入力チェック
*
* @param array $comment_data コメントデータ.
* @return array
*/
function my_preprocess_comment( $comment_data ) {
if ( empty( trim( $comment_data['comment_author'] ) ) ) {
wp_die('<strong>エラー</strong>: 必須項目 (名前) を入力してください。');
}
return $comment_data;
}
add_filter( 'preprocess_comment', 'my_preprocess_comment', 1 );
名前の入力がない場合はエラー画面を表示してコメントが投稿できないようになります。
必須項目のチェックをするなら「送信」ボタンを押す前にチェックしたほうがいいと思いますが、JavaScriptでのチェックになり、PHPとは別のカスタマイズが必要になります。
また、名前の入力チェックをしていますが「空白だったらエラーにする」というチェックになるので、名前を「あ」など適当な1文字を入力するだけでも投稿できてしまいます…
変なコメントが多くなるようだと「やっぱりメールアドレスの入力も必須にしないとダメだわ」となりかねないので、ブログの運営状況に合わせて設定を見直して下さい。
ではまた。