WordPressプラグイン「ContactForm7」を使用したフォームに、スパムメールが届くようになってきたので
とりあえず英語のスパム無くす方法( ..)φメモ
functions.php
function wpcf7_spam3( $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_spam3', 10, 2 );
日本語が入力されていなければ「日本語で入力してください」とエラー表示されます。
上記コードだと"your-name"に日本語が入っていなければ、はじかれます。
項目を変更したい場合は"your-name"の部分を変更すればOKです。
MW WP Formの場合
標準でついている機能「フリガナの入力欄」を追加するだけで英語スパムの対策できます。