こんにちは、クリエイターのMです。
今回はWordpressのフォームの実装で使われるプラグイン「MW WP Form」で起こった不具合について書いていこうと思います。
目次
問題
起こった不具合は以下です。
・確認画面までは進めるけど、送信ボタンを押しても送信できない
・確認画面↔入力画面を何度か行き来すると、入力した情報が変わることがある
・送信してから、再度お問い合わせフォームに戻ると、先ほど入力した情報が残ったままになっている
しかも、このような現象はWindowsでは起こらず、IOSの環境でのみ発生します。
ますます意味不明。
原因と解決策
今回の原因は、サ-バーキャッシュが有効になっているためでした。
解決策は、サーバーのサーバーキャッシュの設定をOFFにすることです。
今回使用していたのがエックスサーバーなので、エックスサーバーを例にお伝えしますが、
まずサーバーのコンパネに入り、
サーバーキャッシュ設定 > 設定対象ドメインを選択 > OFFにする
で解決しました。
調べてみると、エックスサーバー以外でも、サーバーキャッシュ設定が原因でMW WP Formの不具合が起こることがあるようです。
サーバーキャッシュ設定をOFFにしても解決しない場合
今回はサーバー側に原因がありましたが、そうじゃない場合もあると思うので他の原因も考えてみます。
コードやMW WP Formの使い方などに問題がなさそうなときは、以下も確認してみてください。
①WP Fastest Cacheのプラグインで入力内容がキャッシュされてしまう
こちらのプラグインがインストールされている場合、入力内容がキャッシュされてしまって、不具合が起こるそうです。
以下の記事を参考に、管理画面からフォームの関連ページを除外することで修正できます。
https://www.tnkj.com/mw-wp-formwp-fastest-cache/
②スパム対策の「Akismet」のプラグインをインストールしている
Akismetというプラグインが、Wordpressのインストール時にデフォルトで設定されているそうです。
このプラグインを使用している場合は、
「何度も同じIPアドレスから送信を行うとスパム扱いされてしまい、確認画面に遷移しなくなることがあります。テスト環境などで何度も送信テストを行う場合はご注意ください。」
と、MW WP FormのFAQに書かれています。
https://plugins.2inc.org/mw-wp-form/faq/
Akismetのプラグインは停止しておきましょう。
今まで見てきた2つのプラグインだけでなく、リダイレクト系やキャッシュ系のプラグインがインストールされている場合は、MW WP Formとバッティングしている可能性があります。
他のプラグインを無効化して、MW WP Form単体で動作するか確認してみましょう。
単体で正常に動く場合は、他のプラグインとの兼ね合いがうまくいっていないので、どのプラグインがいけないのか1つずつ検証してみてください。
③フォーム識別子をあるべき場所に配置していない
例えば、問い合わせ完了後、再度入力画面にアクセスすると完了画面にリダイレクトされるような不具合の場合は、こちらが原因だと思います。
入力画面だけでなく、確認画面や完了画面にもフォーム識別子を入力する必要があります。
フォーム識別子は以下のようなものですね。
mwform_formkey key=”123″
「MW WP Form は完了画面に設置されたフォーム識別子が実行されたときにセッション情報をリセットし、完了画面へのリダイレクトが再度行われないようになっている。」
と、MW WP FormのFAQに書かれているので、必ず完了画面にもフォーム識別子を設置してください。
私もこちらを見落としていて、不具合が起こったことがあるので記載させていただきました。
まとめ
エラーが起こり、何が原因なのか見当がつかないときは本当に出口のない迷路に迷い込んだ気持ちになりますよね。分かります。
ですが、原因を突き止めて解決まで至ったとき、今までの苦しみから解放されてこの上ない幸せな気持ちになるのは私だけでしょうか。
今回の記事で、誰かの苦しみを解放できていたら幸いです。