ブログ運営の中で、閲覧者からの問い合わせがあると嬉しいもので、できる限り丁寧に対応したいもの…サイトの組み立てもできる限りぶっきらぼうにならないように心がけていますが、そのなかで「問い合わせ」ページで入力後のお礼ページ、いわゆるサンクスページも準備していました。
しかし、Contact form 7とreCAPTCHAとの組み合わせで起こった、問い合わせフォーム入力コメントが全てスパム判定される事象をきっかけに、解決のためにいろいろ設定を変えたりプラグインを入れたりしたものの、解決も急場しのぎにも納得できないまま作業を続けましたが、最後にはサンクスページへの遷移も失われ、原因解らず諦めかけていました。
最終的には、関連プラグインの再インストール・再構築という一番ありがちな方法で解決したんですが、もしかしたら一人くらい、同じ作業で解決する方がおられるかもしれないので報告しておきます。
ことの発端から解決までの流れ
ConoHa WING (THE SONIC)へサイトを引っ越ししてまだ間もない作業中の最中のある日、reCAPTCHA v3が問い合わせフォームからのコメントを全てスパム判定してしまう現象が発生しました。
思い当たるのは、Contact form 7の7.5.1から7.5.2へのバージョンアップ後(Contact form 7 でreCAPTCHAをインテグレートしています)ですが、バージョンダウンでも改善せず、多くのサイトを参考にさせていただきながら解決に至るまでの作業です。
時系列で発端から、解決までを並べるとこんな感じです。
すべての問い合わせメールが届かなくなっているのが発覚
↓
確認のためプラグイン:Flamingo を導入して確認(全てスパム判定されていた)
Flamingoステータスに、スパムログ:reCAPTCHAの応答トークンが空です。の表記を確認
Contact form 7のバージョンダウンでも改善せず→また最新にUp
↓
Contact form 7のインテグレーションからreCAPTCHAの設定を消す
↓
と同時に、プラグイン:Invisible reCaptcha for WordPressをインストール
reCAPTCHAの処理を別のプラグインにゆだねる作戦
↓
メールフォームからの入力がスパム判定される事象がなくなった、解決と思ったが…
↓
しかし、フォーム入力後のサンクスページに遷移しなくなった
とりあえず、フォーム入力後に表示されるコメントを修正して原因究明
↓
気が付くと、フォーム入力後にページがリダイレクトされているのを発見
送信後のアドレスが、~/ #wpcf7-fxxx-o1が付いたアドレスになっている
↓
いろいろなサイトの対処法を試したが効果なし(下記に参考URL記載)
↓
サイトをメンテナンス中にして、 Invisible reCaptcha for WordPress を無効に
問い合わせフォームがリダイレクトされることなく正常稼働することを確認
しかしスパム対策されていないのでNG
↓
プラグインを変えるつもりで、Contact form 7関連のプラグインを全て消す
↓
ダメもとで、Contact form 7 、Flamingoをもう一度インストール
reCAPTCHAのインテグレーションもCF7で設定→ちゃんと動く!?
スパム判定もされず、フォーム入力後のリダイレクトもせず、「正常終了」
メンテナンスモード解除
↓
function.phpの内容を戻して確認
サンクスページへの遷移も復活
冒頭にConoHa WINGのサイトと書きましたが、初期投資が安いうえにドメイン2つまで永年無料なので本当にお勧めです。
記事内容に則した広告
参考にさせていただいた記事と今回の事象の詳細と分析
参考にさせていただいた記事がこちらは現在存在しませんが、各段階での挙動を整理するため(フォーム入力時か、スパム判定時点か、メール送信時かなど)にプラグインFlamingoをインストールしました。
テストとしてサイトからフォーム入力して、Flamingoの受信メッセージ内スパムタブから、スパム判定されているメッセージを確認すると、ステータス内のスパムログで、スパムログ: reCAPTCHA の応答トークンが空です。の表記を確認。
スパム判定の問題を解決すべく、reCAPTCHA V3の処理をContact Form7ではないものにさせてみようと画策。→Invisible reCaptcha for WordPressをインストールしてreCAPTCHA V3の設定を移動させました。
→動作確認したところ、別の問題が発生。ほかに参考にさせていただいた記事はこちら。
参考にさせていただいた記事がこちら。
記事中の内容をいろいろ(全て)と試しましたが、解決しませんでした。
Invisible reCaptcha for WordPressプラグインの有効・無効でContact Form7の挙動が変わるので、ようやくJavaScreptのコンフリクトの可能性を感じ始めました。Chromeデベロッパーツールから検証してみたりしていろいろ模索…悩み中の参考記事はこちら。
自分なりに整理してみると、ContactForm7は非AJAX送信モードで動作していること、そのためwpcf7mailsentのDOMイベントが機能しないため、ページ遷移に使うべきフラグが立たない状態なのでページ遷移しない。ってことになっていると解釈しました。
もう打つ手なし状態で、サンクスページへの遷移を諦めるか、参考記事内で最終手段みたいに書かれていた、プラグイン:MW WP Formを導入するか悩むことしばし…
プラグインを切り替えるためには機能がかぶっているプラグインを削除した方が良いだろうと、ひとまずサイトをメンテナンスモードに移行させて、Contact Form7に関連したものを全て削除しました。
この流れで、ダメもとで再インストールContact Form7→Flamingo→reCAPTCHA V3設定→ページ遷移の設定をしたのですが、この作業でなぜか全て解決しました。
この時、一度プラグインを削除しているので、設定が消えてしまうだけでなくページIDも変わるので各プラグインの始めからの再設定が必要になります。(設定内容をテキストメモで残しておくのが良いです。)
結局、一番単純な方法で解決したわけですが、事の発端はreCAPTCHAが全てスパム判定することから始まったわけで、プラグインの再インストールとはあまり関連性が無いように思います。最初の時点で、すべて再インストールすれば直るのか確証はありません。
起こると困りますが、次回同じシチュエーションになれば試してみたいと思っています。
上記は、当初サンクスページへの遷移をさせたいと思ったときに参考にさせていただいた記事です。
アフィリエイト広告
まとめ
まとめるほどでもないですが、稼働中のサイトを止めずにどうにか動くように…と思ってやったものの、結局急がば回れみたいに、基本に戻った方が良かったって事でしょうか?
あまり参考にならない記事ですが、もう一つ別のサイトも立ち上げないといけないので、自分への備忘録として記事にしておきました。
ここに挙げたリンク以外にも、先人ブロガー様達の記事のおかげで試行錯誤することが出来ました。ありがとうございました。もしも、この記事がどなたかのお役に立てば幸いです。
アフィリエイト広告
この記事へのコメント