Akismetを導入したり、GoogleのreCAPTCHAを導入しているにも関わらず、英語だけの訳の分からないメールが届くという場合、テキストエリアにひらがなが無いメールは送信ボタンも押すことができないようにする方法をお伝えします。
設定するにはWordPress内のfunctions.phpにコードを追加する必要があります。その方法も合わせてお伝えします。
尚、海外からのお問い合わせもあるという方は使わないように。
目次
functions.phpへの設定手順
手順.1 WordPressにログインして、外観 → テーマファイルエディター へと進む
尚、「外観」をクリックしても「テーマファイルエディター」が見つからない場合があります。原因は色々考えられますが、まずプラグインを疑ってみます。例)プラグイン「Really Simple SSL」で「堅牢化」の中の「組み込みのファイルエディターを無効化」がONになっている→OFFにすることでテーマファイルエディタが表示される。
確認方法については、こちらの方の記事をご参照ください。
手順.2 functions.phpをクリックする
手順.3 コードをコピーする
以下のコードをコピーします。
//textareaに「ひらがな」を含まなければ送信できないようにする。
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 => '送信できません。');
}
return $result;
}
add_filter('wpcf7_validate_textarea', 'wpcf7_validation_textarea_hiragana', 10, 2);
add_filter('wpcf7_validate_textarea*', 'wpcf7_validation_textarea_hiragana', 10, 2);
手順.4 コードを張り付けて、ファイルを保存する
ファイルの内容の一番下に張り付けて「ファイルを更新」をクリックします。
※ファイルを保存する前に、functions.phpに記載されている内容をコピーし、念のためメモ帳などに張り付けてデスクトップなどに保存しておきましょう(バックアップ用として)
テキストエリア内にひらがながないと・・・
当社のお問い合わせフォームから連絡しようとすると・・・
「送信できません」と表示され、ボタンが押せないようになりました。
まとめ
functins.phpに直接記入するため、テーマの更新などがあった場合は再度設定する必要がありますが(子テーマを作成して、そちらに記入すれば防げます)、英語と数字だけのスパムメールなら100%ブロックできます。
AkismetやreCAPTCHAを設定していてもスパムが来る場合は、この方法もご活用ください。