カスタマイズ

Contact Form 7でreCAPTCHA v3を設定する手順

Contact Form 7でスパムを防ぐには、Googleで取得したサイトキーとシークレットキーを管理画面に登録するだけでよい。CF7 5.1以降は標準がreCAPTCHA v3のため、フォームにチェックボックスは出ず、ページ右下にバッジが表示されるのが正常な状態だ。

APIキーを取得して「インテグレーション」画面に登録する

まずGoogle reCAPTCHA管理コンソールでv3のサイトを登録し、サイトキーとシークレットキーを発行する。このときドメイン欄に本番と検証環境の両方を入れておくこと。片方だけだと、後から検証環境でバッジが出ない事故につながる。

WordPress側は「お問い合わせ」→「インテグレーション」を開き、reCAPTCHAのパネルに2つのキーを貼って保存する。導入前にWordPress本体を最新へ寄せておくと相性トラブルを避けやすいので、安全な更新手順もあわせて確認しておきたい。

wp-config.phpの定数(WPCF7_RECAPTCHA_SITEKEY等)でキーを管理する方法

複数環境を扱う現場では、キーを管理画面に持たせるよりコードで固定したほうが安全だ。CF7には次の定数を定義すると、その値をサイトキー・シークレットキーとして読み込む仕組みが用意されている(管理画面の値との優先順位は環境やバージョンによって挙動が分かれるため、実際の読み込み結果を必ず確認したい)。

define( 'WPCF7_RECAPTCHA_SITEKEY', 'あなたのサイトキー' );
define( 'WPCF7_RECAPTCHA_SECRET', 'あなたのシークレットキー' );

環境ごとにwp-config.phpを分けておけば、DBを本番から複製しても検証環境が本番キーで動く事故を防げる。動的に差し替えたい場合はwpcf7_recaptcha_sitekeyフィルターも使える。

「フォームが送信できない」を防ぐ検証とv2への切り替え判断

導入後に多い相談が「送信ボタンを押しても反応しない」「スパム扱いで届かない」の2つだ。原因はv3のスコア判定か、通信先ドメインのブロックのほぼどちらかに絞れる。

v3のスコア判定で弾かれるケースとv2へ戻す選択肢(IQComputingプラグインの仕組み)

v3は0.0〜1.0のスコアで人間らしさを判定し、しきい値を下回った送信を静かに弾く。厄介なのは、正規ユーザーでもVPNや厳しめのプライバシー設定だとスコアが伸びず、エラー表示のないまま送信失敗に見えることだ。まずはブラウザのコンソールでバッジのJSが読み込めているか確認しよう。

どうしてもチェックボックス型のv2に戻したいなら「ReCaptcha v2 for Contact Form 7」(IQComputing製、バージョン1.5.0)が使える。CF7のv3用フックをremove_filterで外し、v2用の検証処理に差し替える仕組みで、CF7が5.1未満だと何も動かない。恒久運用というより、v3の誤検知が続く案件の緊急退避と位置づけるのが現実的だろう。

google.comがブロックされる環境でrecaptcha.netに切り替える

特定の国や回線ではgoogle.comへの接続自体が遮断され、バッジもAPI検証も動かない。この場合、CF7はwpcf7_use_recaptcha_netフィルターを見て、スクリプトと検証エンドポイントをrecaptcha.netへ切り替える。

add_filter( 'wpcf7_use_recaptcha_net', '__return_true' );

切り替え先はgoogle.comかrecaptcha.netの2つだけで、任意ドメインは指定できない。反映後はページソースでapi.jsの読み込み先がrecaptcha.netに変わっているか必ず確認すること。スパム対策全体の見直しはセキュリティの基本設定とセットで進めると漏れが減る。

日本発!ECオープンプラットフォーム「EC-CUBE」 EC-CUBEゴールドパートナー EC-CUBEは株式会社イーシーキューブの商標です

カスタマイズに関するお問い合わせはこちら

    本記事のコード・挙動に関する記述は、WordPress 7.0.2 の実際のソースコードと照合して確認しています。