Contact Form 7のスパム対策

自分用メモです。
WorldPressのフォームから英語のスパムが来るようになったので対策。
以下のコードをコピーして fanction.php に貼り付け。


//メールフォームの textarea にひらがなが無ければ送信できない(contact form7)
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 => 'エラー / この内容は送信できません。');
    }
 
    return $result;
}

これで、お問い合わせ本文(textarea)が全文日本語以外だった場合はエラーになり送信できない。(via.Contact Form 7 海外からのスパム対策!お問い合わせ本文が全て英語の場合は送信できないようにする

念のためreCAPTCHAのAPIキーも取得して設定しておく。以上!