ブログを開設したばかりで、これからコツコツ始めようとしていた矢先、
英文のスパムメールがやってきました。
なんかの営業メールみたいですが、まったく興味がありません。
そしてこんなメールは受け取りたくないと思ったので、
対策を講じることにしました。
スパムメール対策の前提条件
- 問い合わせフォームは、日本語以外受け付けたくない
- 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; } /* ここで終了 */
動作確認結果
コード追加して、動作確認をするとうまく動作しました。
あとは、ひらがなを入れた場合は、正常に動作することも確認しています。
(面倒なので、画像はなし)
スパムメールで困っている方は試してみてください!!
コメント