みんな大好きMW WP Form
WordPressでお問合せフォームを作るというのは、WEB制作チームにとっては10万回くらい経験があることですよね。
だいたいプラグインなら「Contact Form7」か「MW WP Form」を使うと思います。
「MW WP Form」を選択する多くの理由が「送信前の確認画面の実装がデフォルトで可能」という点ではないでしょうか?
海外だとわかりませんが、「送信前に一息ついて落ち着いて内容を見返したい。そこで間違いや勘違いを発見したり、クレーム怒りすぎかも…と自省したい。」という日本人的な丁寧な心理が働くものです。入力していきなりそれが送信されてしまうと、なぜか寂しい切ない気持ちになります。
しかしこの「MW WP Form」で「動かない」「画面が進まない」「エラーメッセージが出ない」などの経験をしたことがある人が大半ではないでしょうか?
MW WP Formが動作しない原因でメジャーなもの
1位:wp_head(),wp_footer()の入れ忘れ
wp_head()、wp_footer()を入れ忘れると、プラグインを動作させるjavascriptが読み込まれないため、フォームがうんともスンとも言いません。これはたぶん全員経験しているのではないでしょうか?デザイン重視なWEB制作会社は、あまり配布されているテンプレートを使用せず、一からテンプレートを作ったりしますので、入れ忘れる事があります。
2位:プラグインとの相性が良くない
こちらもよくあるパターンで、高速化のためにキャッシュプラグインを導入していると、何度やってもキャッシュを表示してしまいます。お問合せフォーム設置ディレクトリなどはキャッシュから除外しないと個人情報も洩れますので注意です。
またスパム防止のプラグイン「Akismet」とも相性が悪いようです。
3位:キャッシュが悪さをしている
2位にもありましたがキャッシュ系プラグインのほかにも、サーバーがキャッシュしていた、.htaccessがキャッシュ設定していた、などキャッシュ系の確認は広い範囲で行う必要があります。
4位:MW WP Formのアップデートにより、自動返信設定やURL設定を全て入力しないと動かなくなった
3.0 から4.0への更新した際にURL設定が必須になったということです。
詳しくはこちら
そして新たな刺客として周知したいものが発生しました
今回まんまとやられました。原因を発表します。それは……
MW WP Form設定画面のHTMLや、固定ページのHTMLに「<form>」タグを書いてはいけないよ!!!
です。
わたしのチームではコーディングがあがったHTMLをもらってそれをWordPressに実装していくのですが、お問合せフォームのHTMLに<form>が入っていました。これは当然といえば当然です。しかしMW WP Formは<form>タグを自動で挿入してくれます。なので実装するHTMLに<form>タグが混入していると二重記載となり正しく動作しなくなります。実装する側が意識して元のコーディングから取り除かないといけません。
まとめ
これを解決するのに2時間以上かかってしまったので記事にしてみました。
誰かのお役に立てば幸いです。