概要
wpforms_process_redirect_urlフィルタは、WPFormsプラグインでフォームの送信後にユーザーをリダイレクトする際に、リダイレクトURLを変更するために使用されます。このフィルタを使うことで、ユーザーがフォームを送信した後に表示されるページをカスタマイズできます。多くのケースでこのフィルタは、以下のような機能を実装する際によく使われます。
- ユーザーの行動に基づいて異なるページにリダイレクト
- 特定の条件下でのみリダイレクトURLを変更
- ログインユーザーとゲストユーザーで異なるリダイレクト先
- パラメータによる動的なリダイレクトURLの生成
- A/BテストのためのリダイレクトURLの切り替え
- 特定のフォームに対して個別のリダイレクト設定
構文
add_filter( 'wpforms_process_redirect_url', 'custom_redirect_url', 10, 2 );
パラメータ
string $redirect_url– デフォルトのリダイレクトURL。array $form_data– 補足情報を含む配列(フォームIDや入力データなど)。
戻り値
string– カスタマイズされたリダイレクトURL。
プラグインバージョン
- WPForms: 1.0+
WordPressバージョン
- WordPress: 4.0+
サンプルコード
サンプルコード1
add_filter( 'wpforms_process_redirect_url', 'redirect_after_form_submission', 10, 2 );
function redirect_after_form_submission( $redirect_url, $form_data ) {
if ( absint( $form_data['id'] ) === 123 ) {
return 'https://example.com/thank-you';
}
return $redirect_url;
}
このサンプルは、特定のフォーム(IDが123)送信後に、カスタムの「ありがとう」ページにリダイレクトします。
サンプルコード2
add_filter( 'wpforms_process_redirect_url', 'conditional_redirect', 10, 2 );
function conditional_redirect( $redirect_url, $form_data ) {
if ( isset( $_POST['email'] ) && filter_var( $_POST['email'], FILTER_VALIDATE_EMAIL ) ) {
return 'https://example.com/success';
}
return 'https://example.com/error';
}
このサンプルでは、メールアドレスが有効な場合は成功ページ、そうでない場合はエラーページにリダイレクトします。
サンプルコード3
add_filter( 'wpforms_process_redirect_url', 'dynamic_redirect', 10, 2 );
function dynamic_redirect( $redirect_url, $form_data ) {
$redirect_url = 'https://example.com/' . sanitize_title( $form_data['fields'][0]['value'] );
return $redirect_url;
}
このサンプルは、ユーザーがフォームの最初のフィールドに入力した内容を使って動的にリダイレクトURLを生成します。
サンプルコード4
add_filter( 'wpforms_process_redirect_url', 'login_user_redirect', 10, 2 );
function login_user_redirect( $redirect_url, $form_data ) {
if ( is_user_logged_in() ) {
return 'https://example.com/dashboard';
}
return $redirect_url;
}
このコードは、ログインユーザーがフォームを送信した後にダッシュボードにリダイレクトします。
サンプルコード5
add_filter( 'wpforms_process_redirect_url', 'ab_test_redirect', 10, 2 );
function ab_test_redirect( $redirect_url, $form_data ) {
$is_ab_test = rand(0, 1) === 0; // 50%でABテストを行う
if ( $is_ab_test ) {
return 'https://example.com/variant-a';
}
return 'https://example.com/variant-b';
}
このサンプルは、ランダムにABテスト用の異なるページにリダイレクトを行います。
この関数のアクションでの使用可能性
| アクション | 使用可能性 |
|---|---|
| mu_plugin_loaded | |
| registered_post_type | |
| plugins_loaded | |
| wp_roles_init | |
| setup_theme | |
| after_setup_theme | |
| set_current_user | |
| init | |
| register_sidebar | |
| wp_loaded | |
| send_headers | |
| parse_query | |
| pre_get_posts | |
| wp | |
| template_redirect | 〇 |
| get_header | |
| wp_head |