WordPressのお問い合わせフォームで一番使われているのはContact Form7ではないでしょうか。
設定も簡単で便利なプラグインですが世界中で使われており、そのためスパムの対象になってしまうことがあります。
数分ごとにスパムメールが送られてくる…などで困ってしまうこともありますね。
スパム対策にはプラグインを使ったり様々な方法があります。私もスパム対策で様々な方法試しました。
その中で一番効果があった方法を今回はご紹介いたします。プラグインを使わず、function.phpに直接記述する方法なので人によってはハードルが高いかもしれませんが効果は抜群でスパムメールはほぼこなくなります。
スパムメールでお困りの方は一度試してみてください。
日本語がない場合は送信できないように設定する
スパムメールはプログラムなどで自動的にメールフォームからメールを送り付けてきます。
プログラムから自動で送信する場合、ほとんどが海外のサーバーから送られて英数のランダムな文字列が入力されたものになっています。
なので、Contact Form7のフォームの入力項目に日本語がない場合はエラーになり送信できないように設定をします。そうすると、英数だけの入力のものは届かなくなります。
function.phpに設定する
今回の方法では、プラグインは使用しません。
ご利用のテーマのfunction.phpに以下のコードを追加してください。
FTPから直接ファイルを編集するか、管理画面から編集する場合は「外観>テーマエディタ」からfunction.phpを選択して編集してください。
1 2 3 4 5 6 7 8 9 10 11 |
function wpcf7_validate_spam_message( $result, $tag ) { $value = str_replace(array(PHP_EOL,' '), '', esc_attr($_POST['your-name'])); if (!empty($value)) { if (preg_match('/^[!-~]+$/', $value)) { $result['valid'] = false; $result['reason'] = array('your-name' => '日本語で入力してください'); } } return $result; } add_filter( 'wpcf7_validate', 'wpcf7_validate_spam_message', 10, 2 ); |
このコードのyour-nameの部分が入力項目になります。この部分をご利用のフォームの項目名に合わせて変更してください。
your-nameの項目が英数のみだと「日本語で入力してください」のエラーになり送信できないようになります。
このスパム対策のいいところ
スパムメール対策としての効果が高い
いくつかのサイトでこの方法をためしましたが、それ以来はスパムがほぼ来ないのでかなり効果は高いのではないかと思います。
ユーザーの操作に影響がない
スパム対策のプラグインによってはフォームを入力の際、ユーザーがチェックをつけたりとユーザーの動作を増やすものもあります。
この方法だと、ユーザーがフォームを送る際の動作が増えないのでフォームの利便性を下げません。その面でも有効な対策であるといえます。
この方法がうまくいかない場合
この方法だと以下の場合はうまく動作しないのでご注意ください。
海外のユーザーが対象
海外のユーザーが対象の場合、当然日本語で入力しないと思うので使えません。日本でのユーザーが対象の場合が有効です。
function.phpを変更する必要がある
function.phpはWordPressの設定ファイルなので初心者の方が変更するにはハードルが高いかもしれません。
function.phpはエラーがあるとブログ自体が真っ白になったり、表示しなくなったりするので慎重に編集してください。すぐに元に戻せるようにバックアップを取りながら編集することをおすすめします。
日本語で入力があるスパムだと通用しない
日本語でスパムメールが送られてくる場合は使えないです。ただ、今までそういうケースは私はありませんでした。もし、日本語で送られてくる場合はほかの方法を試してみてください。
まとめ
Contact Form7の効果の高いスパム対策をお送りいたしました。
function.phpを変更するのでハードルは高いかもしれませんが効果は高いのでスパムメールでお困りの方は一度試してみてください。
最後まで読んでいただきありがとうございました。
コメント