2018/02/08  2018/02/09  WordPress 

on_sent_okon_submit はContactForm7 5.0から廃止になりました。

以前はContactForm7の「その他の設定」に以下を記述しておけばサンクスページへ移動してくれました。

cotactform7

Contact Form 7 にサンクスページを作ってみる

ContactForm7 5.0 からon_sent_okon_submit は利用できないのでContactForm7のカスタムDOMイベントによる方法で対応します。

wp-content\themes\テーマ\functions.php

まず、functions.phpの末尾に次のコードを追加します。

add_action( 'wp_footer', 'mycustom_wp_footer' );
 
function mycustom_wp_footer() {
?>
<script type="text/javascript">
document.addEventListener( 'wpcf7mailsent', function( event ) {
    location = 'http://サイトドメイン/contact/thanks';
}, false );
</script>
<?php
}

locationのところに飛ばし先のURLを設定します。
「その他の設定」から “on_sent_ok” の行を削除し、コンタクトフォームの保存を行います。

これで完了です。

 
ちなみに・・・
location.replaceはページを移動すると履歴が残らないため、 ブラウザの[戻る]ボタンで前のページに戻ることができなくなります。

add_action( 'wp_footer', 'mycustom_wp_footer' );
 
function mycustom_wp_footer() {
?>
<script type="text/javascript">
document.addEventListener( 'wpcf7mailsent', function( event ) {
    location.replace(‘http://サイトドメイン/contact/thanks’);
}, false );
</script>
<?php
}
location.replace(‘http://サイトドメイン/contact/thanks’);

複数対応:特定のコンタクトフォームのみ実行

特定のコンタクトフォームのみ対応したい場合、IDを設定してサンクスページへ飛ばすことができます。

コンタクトフォームにできるショートコードのidをif文のところに設定します。
あとは、同じくlocationのところに飛ばし先のURLを設定します。

add_action( 'wp_footer', 'mycustom_wp_footer' );
 
function mycustom_wp_footer() {
?>
<script type="text/javascript">
document.addEventListener( 'wpcf7mailsent', function( event ) {
	if ( '12' == event.detail.contactFormId ) {
		location = 'http://サイトドメイン/contact/thanks';
	}
}, false );
</script>
<?php
}

「その他の設定」から “on_sent_ok” の行を削除し、コンタクトフォームの保存を行います。

こちらで完了になります。

on_sent_ok は廃止されます

DOM イベント