2026年7月2日
2026年7月2日
WordPressで「Could not connect to reCAPTCHA」と表示される原因と対処
フォーム送信時やログイン時に「Could not connect to reCAPTCHA」のようなメッセージが出る場合、ブラウザがGoogleのreCAPTCHAスクリプトを読み込めていないか、WordPressのサーバーがGoogleの検証用APIに接続できていないかのどちらかです。この記事では、問題がブラウザ側とサーバー側のどちらで起きているかを見分ける方法と、それぞれの代表的な原因・対処を説明します。
このメッセージが出る仕組み
まず前提として、このメッセージはWordPress本体ではなく、reCAPTCHAを組み込むプラグイン(お問い合わせフォーム、ログイン保護、コメントスパム対策など)が表示するものです。正確な文言はプラグインによって異なり、「reCAPTCHAに接続できません」「reCAPTCHAの検証に失敗しました」などと表示されることもあります。
reCAPTCHAによる確認は、大きく2つの通信で成り立っています。
- ブラウザ → Google:ページに埋め込まれたreCAPTCHAのスクリプト(
https://www.google.com/recaptcha/api.js)をブラウザが読み込み、利用者の操作をもとにトークンと呼ばれる一時的な値を受け取る - WordPressのサーバー → Google:フォームが送信されると、プラグインがそのトークンとシークレットキーをGoogleの検証API(
https://www.google.com/recaptcha/api/siteverify)に送り、本物の利用者かどうかの判定を受け取る
「接続できない」というメッセージは、このどちらかが失敗したときに出ます。原因を探す前に、どちらで失敗しているのかを切り分けることが近道です。
作業前の準備
設定ファイルを編集したりプラグインを切り替えたりする前に、サイトのバックアップを取っておきます。少なくとも wp-config.php と、使っているフォーム・セキュリティ系プラグインの設定内容は控えておいてください。プラグインによっては、設定をエクスポートする機能があります。
ブラウザ側の問題を確認する
開発者ツールで読み込み状況を見る
フォームのあるページを開いた状態で、ブラウザの開発者ツール(F12キー)を開き、次の2つのタブを確認します。
- ネットワークタブ:ページを再読み込みし、フィルター欄に「recaptcha」と入力します。
api.jsやrecaptchaを含むリクエストが赤字(失敗)になっていないか、あるいはそもそも一覧に現れないかを見ます - コンソールタブ:
grecaptcha is not definedのように、reCAPTCHAのオブジェクトが見つからないというエラーや、Content Security Policy(CSP)による読み込みの拒否が出ていないかを確認します
スクリプトの読み込みに失敗していれば、原因はブラウザ側です。読み込みは成功していて、送信後にだけメッセージが出るなら、サーバー側(後述)を疑います。
広告ブロックや拡張機能
広告ブロックやプライバシー保護の拡張機能が、Googleのスクリプトを止めていることがあります。プライベートウィンドウ(拡張機能が無効な状態)や別のブラウザ、スマートフォンのモバイル回線で同じページを開き、メッセージが出なければ、利用者側の環境の問題です。サイト側でできることとしては、フォームの近くに「送信できない場合は広告ブロックを一時的にオフにしてください」と案内する方法があります。
JavaScriptの最適化・遅延読み込み
キャッシュ・最適化系のプラグインでJavaScriptの結合、遅延読み込み、操作があるまで実行を遅らせる機能を使っていると、reCAPTCHAのスクリプトが期待どおりの順番で読み込まれず、フォーム送信時にトークンが用意されていないことがあります。
最適化プラグインの設定で、recaptcha、google.com/recaptcha、gstatic.com などを最適化の除外対象に追加し、ページキャッシュを削除してから再度試してください。一時的に最適化機能を止めて改善するかを見ると、原因かどうかを判断しやすくなります。
Cookie同意ツールやCSPによる遮断
Cookie同意バナーのツールが、同意前はGoogleのスクリプトを読み込ませない設定になっている場合があります。同意前でもフォームを使えるようにするには、ツール側でreCAPTCHAを「必須」の分類にする、または同意を得てからフォームを表示するといった調整が必要です。
セキュリティ系プラグインやサーバー設定でCSPを付けている場合は、script-src と frame-src に https://www.google.com と https://www.gstatic.com が許可されているかを確認します。コンソールにCSP違反のエラーが出ていれば、ここが原因です。
サーバー側の問題を確認する
WordPressから検証APIに届くかを試す
ブラウザ側に問題が無いのにメッセージが出るなら、WordPressのサーバーからGoogleへの通信を確かめます。WP-CLIが使える場合、WordPressの通信機能を使って検証APIにダミーの値を送ってみます。
wp eval '$r = wp_remote_post( "https://www.google.com/recaptcha/api/siteverify", array( "timeout" => 10, "body" => array( "secret" => "dummy-secret", "response" => "dummy-token" ) ) ); echo is_wp_error( $r ) ? $r->get_error_message() : wp_remote_retrieve_body( $r );'
結果の読み方は次のとおりです。
"success": falseとinvalid-input-secretなどのエラーコードを含むJSONが返る:通信自体は成功しています。ダミー値なので判定が失敗するのは正常で、サーバー側の接続には問題がありませんcURL error 28(タイムアウト)やcURL error 6(名前解決の失敗)が返る:サーバーから外部への通信、またはDNSに問題がありますcURL error 60などSSL証明書に関するエラーが返る:サーバーの証明書ストア(CAバンドル)やOpenSSLが古い可能性があります- 「User has blocked requests through HTTP.」のようなメッセージが返る:WordPressの設定で外部への通信が止められています
外部通信がWordPressの設定で止められている
wp-config.php に WP_HTTP_BLOCK_EXTERNAL が true で設定されていると、WordPressからの外部通信は許可リストにあるホスト以外すべて止められます。この設定を残したまま使う場合は、WP_ACCESSIBLE_HOSTS に www.google.com を加えます。
define( 'WP_HTTP_BLOCK_EXTERNAL', true );
define( 'WP_ACCESSIBLE_HOSTS', 'api.wordpress.org,*.wordpress.org,www.google.com' );
「ツール」→「サイトヘルス」でも、HTTPリクエストが止められている場合に指摘が表示されます。「情報」タブでは、サーバーのcURLやOpenSSLのバージョン、wp-config.php で定義された定数を一覧で確認できるため、サーバー会社に問い合わせる際の資料にもなります。
サーバーのファイアウォールや通信制限
VPSや専用サーバーで外向きの通信をファイアウォールで制限している場合、443番ポートへの通信が許可されているかを確認します。SSHが使えるなら、サーバー上から直接接続を試すと切り分けが早くなります。
curl -sS -o /dev/null -w "%{http_code}\n" https://www.google.com/recaptcha/api.js
200が返れば、サーバーからGoogleへは届いています。タイムアウトする場合は、ファイアウォール、プロキシ、IPv6の経路などを確認してください。共用サーバーでは利用者側で変えられない制限もあるため、その場合はサーバー会社に外部通信の可否を問い合わせます。
キーと設定の確認
接続の問題が無いのに検証が通らない場合は、キーの設定を見直します。接続エラーとは別の原因ですが、プラグインによっては同じようなメッセージにまとめて表示されることがあります。
- サイトキーとシークレットキーを逆に入力していないか
- reCAPTCHAの種類(v2のチェックボックス、v2の非表示、v3)と、プラグインで選んだ種類が一致しているか
- GoogleのreCAPTCHA管理画面に登録したドメインに、実際のサイトのドメインが含まれているか(
wwwの有無、ステージング環境のドメインなど)
v3のトークンには有効期限があり、ページを開いてから長時間経って送信すると失敗することがあります。フォームのページを開き直して再送信すると通るなら、この動きを疑います。reCAPTCHAの仕様や管理画面の構成は変わることがあるため、最新の情報はGoogleの公式ドキュメントで確認してください(2026年10月現在の情報に基づいています)。
プラグインの競合を切り分ける
同じページで複数のプラグインがreCAPTCHAを読み込んでいると、スクリプトが二重に読み込まれ、正しく動かないことがあります。たとえば、フォームプラグインとログイン保護プラグインの両方でreCAPTCHAを有効にしている場合です。
「Health Check & Troubleshooting」プラグインのトラブルシューティングモードを使うと、自分のログインセッションだけでプラグインを無効化し、デフォルトテーマに切り替えられます。フォームプラグインだけを有効にした状態でメッセージが消えるかを確かめ、そこから他のプラグインを1つずつ有効にして、再発する組み合わせを探します。原因が分かったら、reCAPTCHAを使う機能をどちらか一方のプラグインにまとめると、二重読み込みによる不具合を避けられます。
まとめ
「Could not connect to reCAPTCHA」と表示されたときは、次の順で確認します。
- メッセージはプラグインが出すもので、ブラウザ側とサーバー側の2つの通信のどちらかが失敗している
- 開発者ツールのネットワーク・コンソールで、reCAPTCHAのスクリプトが読み込めているかを確かめる
- ブラウザ側なら、拡張機能、JavaScriptの最適化、Cookie同意ツール、CSPを確認する
- サーバー側なら、
wp evalで検証APIへの通信を試し、WP_HTTP_BLOCK_EXTERNAL、ファイアウォール、DNS、SSLを確認する - 接続に問題が無ければ、キーの種類・ドメイン登録・プラグインの重複を見直す