BLOG
メールフォームでハマった話
2019/09/03 [Tue] WEBいろいろハマり過ぎですね…。
まぁそれがWEBってもんです(?)。
さて今度もまた凡ミスだらけでしたが、どなたかの参考になれば。
MW WP Formが動かない
WordPressプラグインの中で代表的なメールフォームのひとつである「MW WP Form」。
使い勝手が良いので以前から愛用していましたが、最近作っていたテンプレートで、なぜかうまく動かず、
- 確認画面から先に進めない
- 必須項目に入力せずに進むと、その画面で固まってしまい、正しく入力しても先に進めない
といった現象が起こるようになりました。
いろいろ調べていても解決策が見当たらず、その時は取り急ぎ「Contact Form 7」に乗り換えて凌ぎました。
Contact Form 7は問題なく動作したものの、その後また別の問題が発生して対処していた折に、大きな失態をしていたことに気付きました。
フッターにwp_footer();を入れ忘れていた!
意外とオリジナルテンプレートでやりがちなミス。
body直前に忘れずに入れよう
<?php wp_footer();>
</body>
<?php wp_head(); ?>
</head>
慌ててこれまで受けた案件のサイトをチェックしましたが全て大丈夫でした。良かった…。
reCAPTCHAに振り回される
前述の通り、wp_footer();を入れ忘れていてもContct Form 7は影響なく動いたのですが、こちらに乗り換えた途端に大量のスパムが届き始めました。
私がメインで使っているドメインは割と取得時期が古く、もう随分昔からスパムが多いので当然と言えば当然。
というわけでContct Form 7のオプションで設定できるreCAPTCHAを導入してみました。
導入方法はとても簡単なので、ここでは割愛します。
しかし、いざ導入してみたものの、reCAPTCHAのバッジが表示されない。
この現象を調べる中で、ようやく先に書いた「wp_footer();入れ忘れ」問題に気付いて無事にバッジも表示されたのですが、「ほんならMW WP Formに戻してもええやん」と思って、Contact Form 7のプラグインを停止させたところ、問題発生。
WordPressにログインできなくなった
プラグインを停止させた途端に「サイトで技術的な問題が発生しています。サイト管理者のメールを確認して指示に従ってください。」のエラーが出てしまい、ログインできない状態に。
メールに届いたURLからリカバリーモードでログインし、Contact Form 7を有効化すると復旧。
reCAPTCHAのキーを削除せずに停止させたのが問題だったのか?と削除してからプラグインを停止させても同じ。
プラグインの設定ファイルに問題があるのか?と「plugins」ディレクトリ内のデータを消したりしても結果は同じ。
何となくモヤモヤしたまま、プラグインが残っていても別に動作に問題はないので、後回しにして放置していましたが、これまた別作業をしていた時に問題の箇所が分かりました。
functions.phpに問題があった
これも冷静に考えれば気付けたこと…。
「技術的な問題」の時は、大概functions.phpに問題アリ。
これまた前述の、reCAPTCHAのバッジが表示されない問題について調べていた折、検索して出てきたfunctions.phpにコードを追記する対処策を試し、消さずに残したままだったのがエラーの原因でした。
それでもreCAPTCHAを入れてみる
ようやく問題が解決したところで、結果的に
- MW WP Form
- Contact Form 7 + reCAPTCHA
どちらでもロボットによるスパムメールは届かなくなりました。
それならば、MW WP FormにreCAPTCHAを追加したいなぁ、と思ったところ、有料プラグインでないと導入できない模様。
リンク先を見れば分かる通り、GPLライセンス(General Public License)で、一度購入すれば複数のWordpressにインストールしても良いとのことですが、とは言え…と考えて、結局またContact Form 7に戻しました。
個人的に、確認画面がないと送った気がしない…ということでMW WP Formの方を愛用していたのですが、Contact Form 7もプラグインで確認・完了画面を追加できるとのことで、そちらを試してみることにしました。
とは言え、こちらは公式プラグインではないので若干不安が残るところ。
今のところ個人的にしか使っていないので、運営しながら検討していきたいと思います。