WordPressのメジャーなメールフォームプラグイン「Contact Form 7」をWordPressテーマ「Godios.」のpjax有効時に正常に動作するように修正します。
うちの事情だとまあそもそもがスパム対策も考えてのメールフォームなので、reCAPTCHAも当然導入しています。pjaxを有効にした状態で遷移先でContact Form 7からメールを送信しようとすると
というなかなかハードな状況になっています。しばらくこの状態だったのでもし送ってくれた人がいたら多分届いてません。ごめんね。
コンタクトフォームページに対してはpjaxを使用しないようにするのが早そうです。Godios.では特定のリンクのみGodモード(pjax)を無効化する機能が用意されています。pjaxを無効化したいページへの<a>
タグのclassにno-god
を追加するだけでOKです。
基本はこれでOKなのですが、コンタクトフォームへのリンクは基本的にフッターからだけにするので、コンタクトフォームに限らずメニューからのリンクは気軽にno-god
を指定できる方が良さそうです。
WordPressのカスタムメニューの項目にはclassを振るオプションがあります。このオプションはメニュー > 表示オプション > CSS クラス
のチェックを入れると表示されます。しかし、これはメニューの<a>
タグではなくその親の<li>
のclassに書き加えるものなので、no-god
classの子の<a>
のclassにもno-god
を動的に付与するようにする必要があります。
ググったらなんとGodiosテーマ作者の記事がマッチしました。リンク先のコードをfunctions.phpに加えればOKです。ここで注意点ですが、記事中にGodiosテーマ用のgnav-link
クラスが追加されたコードが示されていますがこれは今回は使用しません。reCAPTCHAが表示され動作もするものの、メッセージの送信の症状は改善されておらず送信されたように見えてされてないままでした。なので変更前のgnav-link
なしのコードにします。(gnav-link
がどういう仕事をしているのかはよく分かってません。)
追記:gnav-link
はグローバルナビのハンバーガーメニュー用のクラスだったようで、Footerにグローバル用のクラスがついたことで何か誤作動が起きたのではないかとのことです。
報告ありがとうございます!
— Simmon@Godios (@thisissimmon) November 6, 2018
gnav-linkクラスはグローバルナビのリンクにつけて置かないと、Godモード有効時、スマホからハンバーガーメニューをタップして各リンクをクリックした時にメニューが閉じなくなるので追加しておいたんです🤔
ですのでフッターナビゲーションの場合は必要ないのでたねのぶさんの記事の通りで問題ないと思います。
— Simmon@Godios (@thisissimmon) November 6, 2018
フッターナビのリンクにもgnav-linkクラスを追加したことによって、たぶんGodモードのスクリプトが誤作動起こしてたっぽいです。。。
一応元記事に修正入れておきました。
<a>
タグにno-god
リンクを付与する(基本はこれだけでOK)no-god
を指定できるようにするために、メニューの表示オプションからCSSクラスを表示させ、no-god
classを指定する。(この項目でclassが追加されるのはメニューの<li>
タグ)no-god
クラスが追加された<li>
の子の<a>
にも同じクラスが追加されるようにfunctions.php
に書き加える。