[WP]Jetpackコンタクトフォームで送信後に特定のページにリダイレクトさせる方法
スポンサード
スポンサード
Contact Form 7プラグインは、メール送信後に特定のページにリダイレクトさせることができるのですが、Jetpackのコンタクトフォームでも同じことができるのか?を調べてみました。
結論から言うと、grunion_contact_form_redirect_url
というフィルタを使えば、Contact Form 7の時と同じように、メール送信後に特定のページにリダイレクトさせることができるらしい。
ということで早速やってみました。
Jetpackコンタクトフォームで送信後にサンクスページへリダイレクトさせる
コンタクトフォームからメールを送信したら「お問い合わせありがとうございました」というサンクスページに遷移させたい場合ですが、JetPackのサポートページによると、リダイレクトさせるためのコードはこんな感じです。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ページへリダイレクトという具合に、カンマ区切りで複数リダイレクト設定ができるようです。
スポンサード
コメント