このブログのお問い合わせフォームは「contact Form 7」を使用しているのですが、先日、送信できなくなっていることに気がつきました。
不具合が出ている間に、問い合わせが出来なかった方がいらっしゃいましたら申し訳ありませんでした。現在は送信できるようになっています。
結論としては「Contact Form 7 add confirm」プラグインと「reCAPTCHA」を両方使用していたことが問題だったようです。備忘として、調べたことと対策を記録しておきます。
前提条件(環境)は次の通りです。
- WordPress ver.4.9.5
- テーマはSimplicity ver.2.6.7
- Contact Form 7 ver.5.0.1
- Contact Form 7 add confirm ver.5.1
- reCAPTCHAを使用
- 以前は正常に動いていた
- 最近常時SSL化(共有SSL)した
- エックスサーバーを使用
WordPress、テーマ、プラグインは、最初に Contact Form 7を設置した以降にバージョンアップしています。
目次
「contact Form 7」が動かなくなる原因は?
『contact Form 7 + 動かない』等のキーワードで検索して、いくつかのサイトを参照したところ、以下のような原因があるようです。
- jQueryのコンフリクト
- wp_head() と wp_footer()が設定されていない
- REST API が無効になっている
- 共有SSLを使っている
1〜3は問題なさそうだったので共有SSLが怪しいかも?
共有SSLが怪しい?
このブログは4月にエックスサーバーの共有SSLを利用して常時SSL化したのですが、その際お問い合わせフォームの送信テストをしていませんでした。
検索によると「contact Form 7」は共有SSLでは動かない仕様になっているという情報が複数あり、これはもう共有SSLが原因だなと思いました。
ところが、念のためSSL化していないドメインで、同じサーバで、 WordPressとテーマのバージョンも同じ環境で試してみたところ、送信ボタンを1回押しただけでは送信できない(続けて2回押せば送信できる場合もあり)とか、確認画面から戻って編集した後で送信するとエラーになる等、非SSLの状態でも動作が不安定な状態でした。
共有SSLが原因ではないかもしれません。
「contact Form 7 add confirm」が怪しい?
このお問い合わせフォームでは、「contact Form 7」に「contact Form 7 add confirm」を追加しています。確認画面を表示させるためです。さらに、スパムメールを防止するために「reCAPTCHA」も使っています。
試しに「contact Form 7 add confirm」と「reCAPTCHA」を外し、「contact Form 7」の設定をデフォルトのまま送信してみると、何の問題もなく送信できたのです。
検証したところ以下のようになりました。
- 「contact Form 7」+「contact Form 7 add confirm」は送信OK
- 「contact Form 7」+「reCAPTCHA」は送信OK
- 「contact Form 7」+「contact Form 7 add confirm」+「reCAPTCHA」は送信NG
つまり「contact Form 7 add confirm」か「reCAPTCHA」のどちらか、または両方とも外せばOKということに。
「contact Form 7 add confirm」を停止した
とりあえず、スパム防止は必要だろう考え「reCAPTCHA」は使うことにして「contact Form 7 add confirm」を停止し、現在は正常に動作するようになりました。
もう一つの選択肢として考えたのは、「contact Form 7 add confirm」と「reCAPTCHA」を両方とも使わず、代わりに「承諾確認チェックボックス」を使うことです。
「承諾確認チェックボックス」は、チェックをしないと送信できないようにするものです。チェックさせることで内容の確認を促し、ある程度のスパム対策にもなります。「contact Form 7」にはじめから付いている機能なので、外部の機能を使わずにシンプルに運用できる点もメリットになります。
まとめ
今回、検証してわかったこと。
- 共有SSLでも「contact Form 7」は動く
- 「contact Form 7 add confirm」と「reCAPTCHA」を両方使うと送信できない
「contact Form 7 add confirm」と「reCAPTCHA」は、お問い合わせフォームを付けた当初から利用していましたが、いつから送信できなくなったのかは不明なままです。
設置当初にテスト送信していますし、何度かお問い合わせメールもいただいてるので初めは動作していたはずなんですよね。「contact Form 7」か「contact Form 7 add confirm」のバージョンアップによる不具合なのかもしれません。
結局、正確な原因は不明なままですが、お問い合わせフォームはたまには送信確認しないとダメですね。特に関連プラグインの更新をしたときは必ず確認したほうがいいですね。