WordPress Contact Form7でのスパムメール対策(プラグインを使用しない方法)

※アフィリエイト広告を利用しています
ブログ運営
stopspam

ブログを開設したばかりで、これからコツコツ始めようとしていた矢先、
英文のスパムメールがやってきました。

届いたspammail

なんかの営業メールみたいですが、まったく興味がありません。
そしてこんなメールは受け取りたくないと思ったので、
対策を講じることにしました。

スパムメール対策の前提条件

  • 問い合わせフォームは、日本語以外受け付けたくない
  • Contact Form 7というプラグインで問い合わせフォームを作っている
  • テーマは、Cocoonを利用している

とこの環境下で動作すればよいという前提で対策しました。

仕様

Contact Form 7のお問い合わせ内容の箇所で、「ひらがな」が含まれていないものを
スパムとしてエラーにする。

そんだけです。(´・ω・`)

Contact Form 7のお問い合わせ内容(textarea)はリファレンスをみると
wpcf7_validate_textareaのようなので、この部分に正規表現でひらがなが
含まれているのかどうかのチェックをするようにしました。
Cocoon利用者であれば、子テーマのfunctions.phpを以下のように
変更すればうまく動作します(はずです)。

functions.phpの変更は、FTP等で、ローカルPCにダウンロードしてバックアップを取ってから
変更することをお勧めします。

 

変更コード(functions.php) コピペ可

以下のコードの

/* ここから追加 */~/* ここで終了 */までの範囲を追加するだけです。

※windowsの人は文字コードをUTF-8で編集しないと、文字化けが起こるかもしれません。

functions.phpの場所

フォルダ階層

<?php //子テーマ用関数

//親skins の取得有無の設定
function include_parent_skins(){
  return true; //親skinsを含める場合はtrue、含めない場合はfalse
}

//子テーマ用のビジュアルエディタースタイルを適用
add_editor_style();

//以下にcocoon子テーマ用の関数を書く
/* ここから追加 */
//
//-- Contact Form 7 の <textarea> にひらがなが含まれなければエラーにする
//

add_filter('wpcf7_validate_textarea', 'wpcf7_validation_textarea_hiragana', 10, 2);
add_filter('wpcf7_validate_textarea*', 'wpcf7_validation_textarea_hiragana', 10, 2);

function wpcf7_validation_textarea_hiragana($result, $tag)
{
    $name = $tag['name'];
    $value = (isset($_POST[$name])) ? (string) $_POST[$name] : '';

    if ($value !== '' && !preg_match('/[ぁ-ん]/u', $value)) {
        $result['valid'] = false;
        $result['reason'] = array($name => 'ERROR この内容は送信できません。');
    }

    return $result;
}

/* ここで終了 */

動作確認結果

コード追加して、動作確認をするとうまく動作しました。
ひらがなチェックエラー

あとは、ひらがなを入れた場合は、正常に動作することも確認しています。
(面倒なので、画像はなし)

スパムメールで困っている方は試してみてください!!

コメント

タイトルとURLをコピーしました