
最終更新日:
Snow Monkey Formsで日本語入力がない場合に管理者宛メールを送信しないようにする方法

こんにちは。五平餅くんです。
最近MW WP Formsの開発が終了し、プラグインを「Snow Monkey Forms」に変更したという方は多いのではないかなと思います。
私も先日、Snow Monkey Formsのフォームを使用したサイトで、「スパム対策をもっと強化したいので日本語入力を必須にしたい」というご要望がありました。
「スパム対策をもっと強化したいので日本語入力を必須」ということは、例えば「お問い合わせ内容」などで長いテキストの入力欄に、英語や数字のみしかない場合は送信させないというルールを追加するというものです。
Snow Monkey Formsでは「必須設定」や「メールアドレスの形式かどうかのチェックする設定」はあるものの、調べても調べても「日本語が含まれていないお問合わせを拒否する」カスタマイズ方法がわからず苦戦しました。
そして、唯一の解決策を見つけました。
今回は「Snow Monkey Formsで日本語入力を必須にする方法」についてお話ししていきます。
解決策:functions.phpに追加するコード
まずは結論です。
下のコードをfunctions.phpに追加してください。コピペでいけると思います。
//Snow Monkey Formsスパム対策
// 管理者メールの送信をスキップする
add_filter( 'snow_monkey_forms/administrator_mailer/skip', function( $skip, $responser, $setting ) {
$message = $responser->get( 'message' ); // 対象の項目の name を指定
if ( ! preg_match( '/[一-龠]+|[ぁ-ん]+|[ァ-ヴー]/u', $message ) ) {
$skip = true;
}
return $skip;
}, 10, 3 );
※「message」 のところだけ、使用されるinputやtextareaなどのname属性に置き換えてください。
解説:日本語が含まれていない場合にメール送信をスキップする
※とりあえず実装だけしたい方は、ここの説明は飛ばしてもOKです。
「snow_monkey_forms/administrator_mailer/skip」というフックを利用します。
このフックは、特定の条件の時に管理者宛のメール送信をスキップするかどうかを制御するフックです。
特定の条件とは、今回の場合は「日本語が含まれていない」場合ということになります。
概要するコードは下の部分です。
$message = $responser->get( 'message' ); // 対象の項目の name を指定
if ( ! preg_match( '/[一-龠]+|[ぁ-ん]+|[ァ-ヴー]/u', $message ) ) {
$skip = true;
}
$skip = true にすると、メール送信をスキップする設定になります。
これにより、日本語が含まれていない時に管理者宛のメール送信をスキップする設定が完了です。
ちなみに、こちらのコードを追加しても、フォームを送信したユーザーへの自動返信メールについては、日本語が含まれていない時にも送信されます。
しかし、今回はスパム対策なので、管理者宛のメールに届かなければOKです。
まとめ:Snow Monkey Formsを使いこなそう
今回は以上になります。
最近MW WP Formsが開発終了したということで、私の方でも順次Snow Monkey Formsに移行中です。
MW WP Formsに比べるとSnow Monkey Formsは操作が簡単なのですが、カスタマイズという観点からすると「MW WP Formsの方が使いやすかった」という感はあります。
でも、Snow Monkey Formsも工夫すればいろんなことができるはず!
Snow Monkey Formsのカスタマイズに関する記事をこれからも増やしていきますね。
最後まで読んでいただきありがとうございました!
参考記事:https://motoki-design.co.jp/wordpress/snow-monkey-forms-hook/#index_id4