2026年5月20日

2026年5月20日

Contact Form 7にreCAPTCHAを設定する方法

はじめに

Contact Form 7はGoogle reCAPTCHA v3をネイティブサポートしています。ユーザーに操作を求めないv3はUXに影響せずスパムを防止できます。APIキーの取得からCF7への設定まで手順を解説します。

症状・原因

  • スパム送信が多くハニーポットだけでは防ぎきれない
  • reCAPTCHAを設定したがチェックボックスが表示されない(v2とv3の混在)
  • reCAPTCHA設定後にフォームが送信できなくなった
  • スコアが低くて正規ユーザーの送信がブロックされている

解決手順

ステップ1:Google reCAPTCHA APIキーを取得する

1. Google reCAPTCHA Admin Console にアクセス

2. 「+」でサイトを追加

3. reCAPTCHA v3 を選択

4. ドメインを追加(example.com

5. サイトキーシークレットキーを取得

ステップ2:CF7にAPIキーを設定する

お問い合わせ → インテグレーション → reCAPTCHA
- サイトキー: 6Lc…(Googleから取得)
- シークレットキー: 6Lc…(Googleから取得)
→「変更を保存」

WP-CLIで確認する場合:

wp option get wpcf7 --format=json

ステップ3:フォームにreCAPTCHAタグを追加する(v3は不要)

reCAPTCHA v3 はフォームタグを追加する必要はありません。CF7の設定画面でAPIキーを入力するだけで全フォームに自動適用されます。

v2(チェックボックス型)を使う場合のみフォームに追加:

[recaptcha]

ステップ4:スコア閾値をカスタマイズする

// functions.php — reCAPTCHA v3 スコア閾値を調整(デフォルト0.5)
add_filter('wpcf7_recaptcha_verify_response', function(array $response) {
    if (isset($response['score']) && $response['score'] < 0.3) {
        $response['success'] = false;
    }
    return $response;
});

スコアは0〜1.0で、1.0に近いほど人間らしい操作です。閾値を下げると誤検知が減りますが、スパムも通りやすくなります。

ステップ5:特定フォームでreCAPTCHAを無効化する

// functions.php — フォームID 123 ではreCAPTCHAをスキップ
add_filter('wpcf7_recaptcha_sitekey', function(string $key, WPCF7_ContactForm $form) {
    if ($form->id() === 123) {
        return '';
    }
    return $key;
}, 10, 2);

注意事項

  • reCAPTCHAはGoogleのサービスのため、プライバシーポリシーにGoogleのデータ収集に関する記述が必要です
  • v3はバックグラウンドで動作するため、ユーザーには見えません。ページ下部に小さなバッジが表示されます
  • wp_enqueue_scripts でreCAPTCHAのJSが読み込まれているか確認してください

まとめ

CF7のreCAPTCHA v3はAPIキーを設定するだけで全フォームに適用されます。スコア閾値の調整は wpcf7_recaptcha_verify_response フィルターで行い、誤検知と効果のバランスを取ってください。

お気軽にご相談ください

お見積りへ お問い合わせへ