こんにちは 青葉プロモーションのshinsukyです。
昨日は明治神宮に初詣に行ってきたのですが、4日の平日だというのに物凄い人でした。そして風が強く寒い。
あんなに人が多いとご利益も分散されてしまうのではとブツブツ言っていたら躓きました。ごめんなさい。
さて本日は、WordPressのプラグインである「Contact Form 7」の「on_sent_ok」廃止について書きたいと思います。
「on_sent_ok」廃止の背景
WordPressを利用の皆様は、お問い合わせフォームに「Contact Form 7」を使っている方が多いと思います。
私も使用させていただいているユーザーの1人であります。いつもありがとうございます。
確か2017年の6月か7月くらいだったと記憶していますが、「Contact Form 7」のその他の設定で使用していた「on_sent_ok」で警告が出るようになりました。
「Contact Form 7」のその他の設定の詳細はこちらで解説されています。
そして、こちらが「on_sent_ok」廃止の予告です。
“on_sent_ok” とその兄弟設定 “on_submit” は非推奨となっており、2017年末までに廃止される予定です。これらの設定を使うことが即危険だということではないですが、万が一このプラグインやあるいはあなたのサイトの他の部分に脆弱性があった場合にリスクを増大させる可能性があります。より安全な代替方法に置き換えるべきです。
つまり、脆弱性の危惧により、廃止されるとのこと。
「on_sent_ok」の使われ方
海外ユーザーは知りませんが、日本のユーザーはほぼ、送信完了後のサンキューページ遷移に使用しています。
「on_sent_ok」が廃止されてしまうと、サンキューページに遷移させる事ができなくなり、困っているユーザーも多いと思います。
これについて作者がどの様に考えているかと言うと、以下に書かれています。
まず、これから書こうとしている内容は 99.99% のユーザーにとって必要のないものであり、実際、使用を推奨しないものだということを始めにお断りしておきます。これは 0.01% のユーザーを対象に書いていますので、必要がなければ無視して構いません。
いわゆる「サンキューページ」にリダイレクトさせるにはどうしたらいいかという質問がよくユーザーから送られてきます。彼らは Google Analytics でフォーム送信をトラッキングするために「サンキューページ」へのリダイレクトが必要なのだと思い込んでいて、そのためにそのような質問をしていることがほとんどです。そんなのは全然必要ありません。時代遅れの無意味な慣習といっていいと思います。
つまり、
Google Analyticsでトラッキングするためだけに、
サンキューページに遷移させるのは悪しき慣習だからやめろ
ということです。
Google Analytics でトラッキングする方法は、以下を参照ください。
サンキューページは必要なのか?
海外のコンタクトフォームを見ると、大半がサンキューページはありません。送信ページがそのままリダイレクトされます。
また、日本特有の慣習で入力内容確認ページというものがありますが、海外サイトではほぼ見かけません。
Google Analyticsでトラッキングするためだけにサンクスページを作成するのはナンセンスと私も思いますが、フォームの下に小さく「送信ありがとうございました」と出るよりは、ページ遷移を行ってユーザーに
「送ってやったぜ!!」
感を与えたほうが、ユーザー的には気持ちが良いと思っています。
確認ページについては、個人的にはうっとうしいと思っているのでいらないかな。
「on_sent_ok」の代替方法
Google Analyticsでトラッキングだけしたいという方は、「Contact Form 7」の作成者が言うように、送信イベントとしてトラッキングされたほうがよろしいかと思います。
フォーム送信をイベントトラッキングする
header.phpの<head></head>内に以下を記述する
<script>
document.addEventListener( 'wpcf7mailsent', function( event ) {
ga( 'send', 'event', 'Contact Form', 'submit' );
}, false );
</script>
プラグイン「インサイト」を使用している方は注意
Google AnalyticsでWordPressのプラグイン「インサイト」を使用している方も多いと思いますが、1点注意が必要です。
「インサイト」のプラグインを使用した状態で、header.phpに上記コードを追記してもGoogle Analyticsの送信イベントがトラッキングできません。
自分のページをブラウザで表示し、「F12」キーでコンソールを確認すると、以下のようなエラーが出ています。
ReferenceError: ga is not defined
なぜこの様な問題が起こるかと言うと、「インサイト」は「ga」ではなく、「__gaTracker」として吐き出しているため、
いくらフォーム送信で、
ga( 'send', 'event', 'Contact Form', 'submit' );
を送っても、そんな定義はソースコードに見当たらないわけで、当然トラッキングはされないという結果になります。
この問題を解決させるためには、2つの方法があります。
その1.「インサイト」の定義に合わせたコードにする(「ga」→「__gaTracker」)
header.phpの<head></head>内に以下を記述する
<script>
document.addEventListener( 'wpcf7mailsent', function( event ) {
__gaTracker( 'send', 'event', 'Contact Form', 'submit' );
}, false );
</script>
その2.「インサイト」のオプション設定をする
「インサイト」 → 「設定」 → 「Tracking」 → 「Compatibility」 のカスタムコードに以下を追加する。
__gaTracker( function() { window.ga = __gaTracker;});
どちらでもOKなのですが、前者はインサイト依存の対策であるという事を忘れそう。
サンキューページに遷移させる
「Contact Form 7」の作成者に非難されようと、時代遅れだと言われようと、何としてもサンクスページに遷移させるんだ!という猛者はこちら。
header.phpの<head></head>内に以下を記述する
<script>
document.addEventListener( 'wpcf7mailsent', function( event ) {
location.replace('./thanks');
}, false );
</script>
※’./thanks’を自分の遷移させたいサンキューページのURLにしてくださいね。
まとめ
私はですね、管理しているサイト全体の8割がサンキューページへの遷移を入れています。
対象が日本人のサイトということもあり、これまでの慣習に従うという感じですかね。まあでもどっちを選択しても大した問題ではないので、好きなほうを選択されれば良いと思います。
ちなみに、直接コードファイルを触りたくないというユーザー向けに、いくつかプラグインもあります。
プラグイン:AddFunc Head & Footer Code
ただ、今回の様なコードであれば、プラグインを使用しないほうが良いと思います。
header.phpファイルは、ファビコン(Favicon)の設定でも触りますので、そのついでに本ページ遷移、Google Analyticsのトラッキング設定をするのがよろしいかと。
本日は、「Contact Form 7」の「on_sent_ok」廃止の対策について書かせていただきました。
それではまたお会いしましょう。
この記事へのコメントはありません。