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

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

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

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

そうじゃない? 他の理由があって異なる URL にリダイレクトさせたいのですか?

最も簡単な方法は Contact Form 7 のカスタム DOM イベントを使って JavaScript を実行することです。以下は wpcf7mailsent イベント発生時に異なる URL にリダイレクトさせるスクリプトの例です:

<script>
document.addEventListener( 'wpcf7mailsent', function( event ) {
	setTimeout( () => {
		location = 'http://example.com/';
	}, 3000 ); // Wait for 3 seconds to redirect.
}, false );
</script>

テーマのテンプレートファイルにこのコードを埋め込んで使います。もちろん、コード中の http://example.com/ は実際にリダイレクトさせたい URL に置き換える必要があります。

注意: on_sent_ok のフックを使用する方法は非推奨になっており現行の Contact Form 7 では機能しません。

WordPress のお問い合わせフォームプラグイン。シンプル、でも柔軟。