MW WP Formの「Invalid reCAPTCHA Secret key」エラーの解決方法
WordPressでお問い合わせフォームを作成できるプラグイン「MW WP Form」では、Google reCAPTCHAを設定してスパム対策を行うことができます。
しかし、reCAPTCHAの設定自体は正しいにもかかわらず、
Invalid reCAPTCHA Secret key
というエラーが発生することがあります。
この記事では、MW WP FormでreCAPTCHAを設定した際に発生する「Invalid reCAPTCHA Secret key」エラーについて、実際に発生した原因と解決方法を解説します。
「Invalid reCAPTCHA Secret key」エラーとは?
MW WP FormでreCAPTCHAを設定すると、フォーム送信時などにreCAPTCHAの認証処理が行われます。
その際に、
Invalid reCAPTCHA Secret key
というエラーが表示される場合があります。
エラーメッセージを見ると、Google reCAPTCHAで発行したSecret Key(シークレットキー)が間違っているように思えます。
もちろん、reCAPTCHAのSecret Keyそのものが間違っているケースもあります。
しかし、今回紹介するケースでは、reCAPTCHAのキー自体が間違っていたわけではありません。
PHPのテンプレートファイル内にMW WP Formのショートコードを直接記述していたことが原因でした。
エラーが発生した原因
今回の原因は、PHPのテンプレートファイル内でMW WP Formのショートコードを直接実行していたことでした。
例えば、お問い合わせページのテンプレートであるpage-contact.phpなどに、以下のようなコードを記述しているケースです。
<?php echo do_shortcode('[mwform_formkey key="100"]'); ?>
このコードは、PHPからショートコードを直接実行するための記述です。
MW WP Formのフォームをテンプレートファイルへ直接表示する方法としては、一見問題がないように思えます。
しかし、reCAPTCHAを使用する場合、この実装方法が原因となってInvalid reCAPTCHA Secret keyエラーが発生することがあります。
そのため、まずはreCAPTCHAのSecret Keyを何度も再発行する前に、お問い合わせフォームをどのようにテンプレートへ表示しているかを確認することが重要です。
解消方法
今回のケースでは、PHPテンプレートファイルからMW WP Formのショートコードを直接実行する方法をやめ、WordPressの固定ページ側でショートコードを実行するように変更します。
PHPテンプレートのコードを変更する
まず、現在のお問い合わせページのテンプレートファイルを確認します。
例えば、page-contact.phpに以下のような記述がある場合です。
変更前
<?php echo do_shortcode('[mwform_formkey key="100"]'); ?>
この記述では、PHPテンプレートから直接MW WP Formのショートコードを実行しています。
これを、以下のように変更します。
変更後
<?php the_content(); ?>
the_content()は、WordPressの固定ページや投稿ページに入力されている本文を表示するための関数です。
つまり、PHPテンプレート側でフォームのショートコードを直接実行するのではなく、固定ページの本文に記述した内容をテンプレートから出力する形に変更します。
固定ページにMW WP Formのショートコードを記述する
次に、WordPressの管理画面からお問い合わせページとして使用している固定ページを開きます。
固定ページの本文に、MW WP Formから発行されたショートコードを記述します。
例えば、
[mwform_formkey key="100"]
のようなショートコードです。
今回の例では、フォームキーが100の場合、
[mwform_formkey key="100"]
と記述します。
これで、
PHPテンプレート
↓
the_content()
↓
固定ページの本文
↓
MW WP Formのショートコード
↓
お問い合わせフォーム
という構成になります。
変更前と変更後の違い
今回の修正内容を整理すると、以下のようになります。
変更前
page-contact.php
↓
MW WP Formのショートコードを直接実行
↓
お問い合わせフォーム
PHPテンプレート内で直接ショートコードを実行しています。
変更後
page-contact.php
↓
the_content()
↓
固定ページの本文
↓
MW WP Formのショートコード
↓
お問い合わせフォーム
PHPテンプレートではページの本文を出力するだけにして、MW WP Formのショートコードは固定ページ側に記述します。
今回発生したエラーでは、この構成へ変更することで解消できました。
reCAPTCHAのSecret Keyを変更する前に確認したいこと
Invalid reCAPTCHA Secret keyと表示されると、まずGoogle reCAPTCHAの設定画面を確認してSecret Keyを再発行したくなるかもしれません。
しかし、Secret Keyが正しく設定されているにもかかわらずエラーが発生している場合は、フォームそのものがどのように呼び出されているかを確認することも重要です。
特に、オリジナルテーマやPHPテンプレートを使用しているWordPressサイトでは、固定ページの本文ではなく、テンプレートファイルへ直接フォームを記述している場合があります。
その場合は、
<?php echo do_shortcode('[mwform_formkey key="100"]'); ?>
のような記述がないか確認してみましょう。
修正後に確認すること
コードを変更したら、お問い合わせページを実際に表示して確認します。
まず、Invalid reCAPTCHA Secret keyのエラーが表示されなくなっているか確認します。
そのうえで、実際にフォームを入力して送信テストを行います。
確認するポイントは、
- お問い合わせフォームが正常に表示されるか
- reCAPTCHAが正常に動作するか
- エラーが表示されないか
- フォームを正常に送信できるか
- 管理者宛てのメールが届くか
- ユーザー宛ての自動返信メールが届くか
などです。
特にお問い合わせフォームは、画面上で正常に表示されていても、送信処理やメール送信の部分で問題が発生しているケースがあります。
そのため、実際にテスト送信まで行うことが重要です。
MW WP FormのエラーはSecret Keyだけが原因とは限らない
今回のエラーではPHPテンプレートへのショートコードの記述方法が原因でしたが、Invalid reCAPTCHA Secret keyというエラーが表示されたからといって、必ずしも同じ原因とは限りません。
例えば、
- reCAPTCHAのSecret Keyが間違っている
- Site KeyとSecret Keyを取り違えている
- reCAPTCHAの設定とドメインが一致していない
- 使用しているreCAPTCHAのバージョンが異なる
- MW WP Form側の設定に問題がある
- PHPテンプレートからフォームを直接呼び出している
- 他のプラグインやテーマとの競合が発生している
など、複数の原因が考えられます。
そのため、Secret Keyを再設定しても解決しない場合は、reCAPTCHAの設定だけではなく、フォームがWordPress上でどのように実装されているかまで確認することが大切です。
まとめ
今回は、MW WP FormでreCAPTCHAを設定した際に発生した、
Invalid reCAPTCHA Secret key
というエラーの解決方法について解説しました。
今回のケースでは、reCAPTCHAのSecret Keyそのものが原因ではなく、PHPテンプレートファイル内でMW WP Formのショートコードを直接実行していたことが原因でした。
変更前は、
<?php echo do_shortcode('[mwform_formkey key="100"]'); ?>
としていましたが、これを、
<?php the_content(); ?>
へ変更します。
そして、固定ページの本文に、
[mwform_formkey key="100"]
を記述します。
このように、
PHPテンプレートでは固定ページの本文を表示し、MW WP Formのショートコードは固定ページ側で管理する
という構成に変更することで、今回のエラーを解消することができました。
ただし、「Invalid reCAPTCHA Secret key」というエラーは複数の原因によって発生する可能性があります。
reCAPTCHAのキーを確認してもエラーが解消しない場合は、WordPressのテーマやPHPテンプレート、プラグインの設定なども含めて原因を切り分ける必要があります。
WordPressのお問い合わせフォームのエラーやreCAPTCHAの設定、フォームが正常に送信できないといったトラブルについても対応しています。
365日対応・8:00〜23:00対応・最短即日対応で、原因が分からないWordPressのエラーやホームページの修正にも対応しています。





