Contact Form 7プラグインではメール送信後に特定のページにリダイレクトさせることができますが、同じことがJetpackのコンタクトフォームでもできるのか?を調べてみました。
Jetpackコンタクトフォームで送信後にサンクスページへリダイレクトさせる
結論から言うと、grunion_contact_form_redirect_urlというフィルタを使えば、Contact Form 7の時と同じように、メール送信後に特定のページにリダイレクトさせることができるらしい。ということで早速やってみました。
コンタクトフォームからメールを送信したら「お問い合わせありがとうございました」というサンクスページに遷移(リダイレクト)させるコードはこんな感じです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
function jetpackcom_custom_form_redirect( $redirect, $id, $post_id ) { $redirects = array( '2' => home_url('thanks'), ); foreach ( $redirects as $origin => $destination ) { if ( $id == $origin ) { return $destination; } } return $redirect; } add_filter( 'grunion_contact_form_redirect_url', 'jetpackcom_custom_form_redirect', 10, 3 ); |
重要なのはコードの3行目のリダイレクト指定の箇所です。
上記サンプルだと、
❶まず‘2’はページID、つまりJetpackコンタクトフォームが設置された固定ページや投稿のIDのことです。
❷次に‘thanks’はリダイクト先のページスラッグ。これは、リダイレクトさせるページはhttps://sample.com/thanks/ですよ、という意味です。
上記2箇所(IDとページスラッグ)の指定を変えて、ご利用のテーマのfunctions.phpに貼り付けてみてください。
複数のJetpackのコンタクトフォームでリダイクレトさせる
サイトに複数のJetpackのコンタクトフォームが設置されている場合、サポートページのサンプルコードのように、複数行にわたってリダイレクトの指定を書けば実現可能かと思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
function jetpackcom_custom_form_redirect( $redirect, $id, $post_id ) { $redirects = array( '2' => home_url('thanks'), '12' => home_url('thanks2'), ); foreach ( $redirects as $origin => $destination ) { if ( $id == $origin ) { return $destination; } } return $redirect; } add_filter( 'grunion_contact_form_redirect_url', 'jetpackcom_custom_form_redirect', 10, 3 ); |
上記コードの場合、id:2のページのフォームからメールが送信されたらthanksページへリダイレクト。で、id:4のページのフォームから送信されたらthanks2ページへリダイレクトという具合に、カンマ区切りで複数リダイレクト設定ができるようです。
参考サイト
https://jetpack.com/support/contact-form/
コメント