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 フィルターで行い、誤検知と効果のバランスを取ってください。