BMWとBMW MINIの正しい中古車の買い方

BMW/MINIなど中古車を10台以上購入したGOCCHIのノウハウを公開します!

BMW/MINIの中古車で失敗したくない人はこちらへ!

Contact Form 7の送信エラー、原因はreCAPTCHA3だったけど意外と簡単に直せた話

記事内に広告が含まれています。

Contact Form 7の送信エラー、原因はreCAPTCHA3だったけど意外と簡単に直せた話

Contact Form 7、突然の送信エラー

WordPressのお問い合わせフォームとして定番の「Contact Form 7」。

私のサイトでも長年使っていて、これまで特に大きなトラブルはありませんでした。

ところが、ある日最近営業スパムメールが届かないことを不思議に思い、フォームを送信しようとしたところ、

「メッセージの送信に失敗しました。後でまたお試しください。」

という赤いエラーメッセージが表示され、メールが送れなくなってしまいました。

設定を見直しても、フォームの項目や送信先メールアドレスに誤りはなし。

WordPressやプラグインも最新版。

キャッシュの削除や再インストールも試してみましたが、状況は変わらず。

ネットで調べてみると、同じような症状に悩んでいる人がたくさんいて、「SMTP設定」や「JavaScriptの競合」などいろいろな原因が挙げられていました。

でも、自分のケースにピッタリ当てはまるものが見つからず、正直かなり迷いました。

そして最終的にたどり着いたのが、Google reCAPTCHA v3。

まさかこれが原因だったとは……。

この記事では、私が実際に遭遇したトラブルと、意外とシンプルだった解決法についてご紹介します。

  1. reCAPTCHA v3が原因で送信エラーが発生:Contact Form 7のフォームが送信できない原因は、reCAPTCHA v3のスクリプトが読み込まれていたことでした。
  2. v2のキーを設定してもv3のスクリプトが残る場合がある:reCAPTCHA v2のキーを再設定しても、Site Kitなどの影響でv3のスクリプトが残り、送信エラーが解消しないことがあります。
  3. プラグイン「Contact Form 7 reCaptcha v2」で簡単に解決:専用プラグインを導入することで、v3の読み込みを防ぎ、v2形式でフォーム送信が正常に動作するようになりました。

エラーの状況:見た目は正常、でも送れない

フォーム自体はいつも通り表示されており、名前やメールアドレスを入力して送信ボタンを押すだけのシンプルな構成です。

ただ、送信ボタンを押すと画面下部に・・・

「メッセージの送信に失敗しました」という赤い通知が表示され、送信処理が完了しません。

送信完了メッセージは一切表示されず、再度送っても同じ結果。

JavaScriptのコンソール(Chromeのデベロッパーツール)を開いても、致命的なエラーは出ていない状態。

むしろ何も問題がなさそうに見えることが混乱の元でした。

WP Mail SMTPやContact Form 7の設定画面を再確認しても、宛先メールの入力ミスやフォームの記述エラーはなし。

メールテストも問題なく送信できていたので、メールサーバー側の問題でもありませんでした。

この時点で・・・

「設定は正しいのに送れない」

プラグインのどこかでブロックされている?

と仮説を立て、ページのHTMLソースを直接確認することにしたのです。

原因の特定:v3のスクリプトが読み込まれていた

「設定は正しいのに送信できない」という状況から、テーマやプラグインの不具合を疑い、ページのHTMLソースを直接確認してみることにしました。

ブラウザでフォームページを開いた状態で右クリック →「ページのソースを表示」を選び、検索で「recaptcha」と入力。

すると、以下のようなスクリプトが読み込まれているのを発見しました。

<script src="https://www.google.com/recaptcha/api.js?render=●●●●"></script>

これはGoogle reCAPTCHA v3用のスクリプトで、ユーザーに表示されるチェックボックスなしにスコアでスパム判定を行う仕組みです。

一方、私のContact Form 7のフォームには以下のように、reCAPTCHA v2専用のショートコードが記述されていました。

[recaptcha]

つまり、reCAPTCHA v3のスクリプトが読み込まれている状態で、reCAPTCHA v2の構文を使っていたことになります。

この2つは仕様がまったく異なり、混在させるとフォームの送信処理が正常に機能しなくなる可能性が高いという情報を複数のブログで確認。

これでようやく、「エラーの原因はreCAPTCHA v3のスクリプトだ」という見当がつきました。

試した対策:v2のキーに切り替え

原因がreCAPTCHAの混在にあると判断し、まずはv3の設定を完全に解除することにしました。

WordPressの管理画面から「お問い合わせ」→「インテグレーション」へ進み、Contact Form 7のreCAPTCHAセクションにある「キーを削除」ボタンをクリック。

これでreCAPTCHAの連携が一度解除されます。

次に、GoogleのreCAPTCHA管理ページにログインし、新しくreCAPTCHA v2のキーを取得しました。

ポイントは、登録の際に・・・

  • 「reCAPTCHA v2」を選び、
  • 「I’m not a robot チェックボックス」を使うタイプ

を選択すること。

ドメインも正しく設定し、発行された「サイトキー」と「シークレットキー」をWordPress側に再入力します。

そして、フォームに使用している[recaptcha]のショートコードはそのままにして再度送信テストを実施。

……しかし、まだ送信できない。

もう一度ソースを見てみると、reCAPTCHA v3のスクリプトがなぜか残っているのです。

Contact Form 7側ではv2の設定になっているのに、api.js?render=〜が読み込まれ続けている……。

この時点で「他のプラグインが勝手にreCAPTCHA v3を読み込んでいるのでは?」という疑惑が浮かびました。

解決策:プラグイン「Contact Form 7 reCaptcha v2」の導入

v3のスクリプトを削除したはずなのに、なぜかまだ読み込まれている。

設定画面にはもうv3のキーはない。

これはもう、別のプラグインがreCAPTCHA v3を勝手に読み込んでいるに違いないと考えました。

調べていく中で見つけたのが、こちらのブログ。

【WordPress】お問い合わせフォーム「Contact Form 7」に「reCaptcha v2」を設定する方法
プラグイン「Contact Form 7」でお問い合わせフォームを設置するとき。reCAPTCHAを導入する場合、現在はv3がデフォルトですが、他バージョンのv2を使用したいケースもあるかと思います。...

この記事では、Contact Form 7 に v2を適切に読み込ませるためのプラグイン「Contact Form 7 – reCaptcha v2」が紹介されていました。

さっそくそのプラグインをインストール → 有効化。

すると、今まで読み込まれていたapi.jsのv3スクリプトが読み込まれなくなり、代わりに v2用のシンプルな api.js スクリプトがページに表示されるようになりました。

さらに、フォーム上に「私はロボットではありません」のチェックボックスもきちんと表示。

あれほど悩んでいた送信エラーが嘘のように、フォームがすんなり送れるようになりました。

このプラグインは、Contact Form 7 側にv2のキーを登録しているだけでは解決できない、「v3スクリプトの強制読み込み」という厄介な部分を完全に解決してくれます。まさに救世主でした。

補足:キャッシュとSite Kitの罠

今回のようなトラブルで見落としがちなのが、「キャッシュ」と「他プラグインの干渉」です。

私の環境では「W3 Total Cache」を使用していたため、古いスクリプト(v3のもの)がブラウザやサーバーにキャッシュとして残っており、設定を変更してもすぐには反映されませんでした。

必ずキャッシュはクリアしましょう。

もうひとつの盲点が「Site Kit by Google」。

このプラグインもGoogle関連のスクリプトを自動で読み込むことがあるため、v3のスクリプトが再び出現するケースがあります。

実際、私も一時的にこのプラグインを無効化することで、ようやくスッキリした状態に戻すことができました。

Contact Form 7の問題に見えて、実は他のプラグインが原因だったということも大いにあり得ます。

まとめ:reCAPTCHAのバージョンにご用心

今回の経験で強く感じたのは、reCAPTCHA v2とv3はまったく別物であり、互換性はないということです。

そして、Contact Form 7はフォーム側に [recaptcha] を使うなら、基本的にv2で運用するのが無難です。

v3のほうがスマートでUX的には優れている反面、フォーム送信が止まってしまうようなことが起きると、本末転倒です。

「フォームが送れない」「設定は正しいのに動かない」というときは、まずreCAPTCHAのバージョンを疑う。

これは今後、私自身がサイトを運営していくうえでも重要なチェックポイントになりました。

この記事が、同じようなトラブルで悩んでいる方のヒントになれば幸いです。

そして何より、「Contact Form 7 reCaptcha v2」プラグインには本当に感謝しています。

最後になりますが、今回のトラブルを解決するきっかけをくれた

  • プラグイン「Contact Form 7 reCaptcha v2」 の開発者の方、

そして

心より感謝いたします。

FAQセクション

Q1. Contact Form 7でメールが送れないのはreCAPTCHAが原因ですか?

A. 可能性があります。特にreCAPTCHA v3を使っている場合、フォームとの相性や他プラグインとの競合により、送信がブロックされることがあります。

Q2. reCAPTCHA v2とv3は何が違うのですか?

A. reCAPTCHA v2とv3は、バージョンの新旧ではなく判定方式が異なります

v2は「私はロボットではありません」のチェックボックスなどでユーザーに操作を求めますが、v3はユーザーの行動をもとにスコア判定を行う仕組みです。

両者は互換性がないため、使用するスクリプトや設定も異なります。

Q3. v2のキーを設定したのにまだ送信できないのはなぜ?

A. サイト上にreCAPTCHA v3のスクリプトが残っている可能性があります。

Site Kit by Googleなどのプラグインが自動的に読み込んでいるケースもあるため、他のプラグインの影響も確認しましょう。

Q4. 「Contact Form 7 reCaptcha v2」プラグインは安全ですか?

A. はい。多くのユーザーに利用されており、現在も安定して動作しています。

WordPress公式ディレクトリからインストール可能で、特別な設定も不要です。

Q5. reCAPTCHAを導入しないとスパムが増えますか?

A. はい。reCAPTCHAを外すと自動送信によるスパムが届く可能性が高まります。

reCAPTCHA v2やAkismetなど、何らかのスパム対策を導入することをおすすめします。

コメント

タイトルとURLをコピーしました