送信後に異なる URL にリダイレクトさせるには

まず、これから書こうとしている内容は 99.99% のユーザーにとって必要のないものであり、実際、使用を推奨しないものだということを始めにお断りしておきます。これは 0.01% のユーザーを対象に書いていますので、必要がなければ無視して構いません。

ご存じのように、デフォルト設定の Contact Form 7 はフォーム送信後にそのフォームの URL と同じ URL にリダイレクトします。ところが、非常にまれなケースですが、これを変更して送信後に異なる URL に対してリダイレクトさせるようにする必要が生じるかもしれません。ここでは、そのような動作を実現するための Contact Form 7 の設定方法について説明します。

ところで、いわゆる「サンキューページ」にリダイレクトさせるにはどうしたらいいかという質問がよくユーザーから送られてきます。彼らは Google Analytics でフォーム送信をトラッキングするために「サンキューページ」へのリダイレクトが必要なのだと思い込んでいて、そのためにそのような質問をしていることがほとんどです。そんなのは全然必要ありません。時代遅れの無意味な慣習といっていいと思います。実際、リダイレクトなどしなくても Google Analytics でフォーム送信をトラッキングできるのですから。

そうじゃない? 他の理由があって異なる URL にリダイレクトさせたいのですか? そうですか。それは失礼しました。それではその方法をお見せします。

一番簡単な方法は on_sent_ok の JavaScript アクションフックを使うことです。このフックを使うと、フォームが正常に送信されたときに実行させたい JavaScript のコードを指定することができます。コンタクトフォームの管理ページの下の方にその他の設定の項目があるので、そこに次のコードを挿入してください:

on_sent_ok: "location = 'http://example.com/';"

説明するまでもないと思いますが、http://example.com/ のところはリダイレクトさせたい URL に置き換える必要があります。

on_sent_ok example

以上です。簡単でしょ? 試して動くかどうかチェックしてみてください。

もしこれが動かないなら、Ajax が正常に機能しているか確認してください。JavaScript のフックを使用していますから動作には JavaScript が必要です。JavaScript が使えない環境でリダイレクトが必要な場合はまた別なハックが必要になるでしょう。

Just another contact form plugin for WordPress. Simple but flexible.