プラグインWPFormsのwpforms_process_redirect_urlフィルタの使用方法・解説

概要

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

この関数について質問する


上の計算式の答えを入力してください