You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress插件表单提交后如何动态获取重定向目标URL

动态获取表单提交页面URL的重定向方案

针对你的场景,推荐以下两种无需AJAX、保持POST提交的可行方案,优先使用第一种:

方案一:表单添加隐藏字段存储当前页面URL

这是最可靠的方式,通过在表单中主动嵌入当前页面的URL,处理时直接读取该值完成重定向。

步骤1:在短码渲染的表单中添加隐藏字段

在你输出表单的短码函数里,加入一个隐藏字段,存储当前页面的永久链接:

<form action="<?php echo esc_attr( admin_url( 'admin-post.php' ) ); ?>" method="post">
    <!-- 其他表单字段 -->
    <input type="hidden" name="redirect_url" value="<?php echo esc_url( get_permalink() ); ?>">
    <!-- 提交按钮 -->
    <button type="submit">提交</button>
</form>

get_permalink()会自动获取当前页面的URL,配合esc_url()确保输出安全。

步骤2:在表单处理函数中使用该URL重定向

在no1_evaluate_remember_form函数里,读取隐藏字段的值并验证合法性,再完成重定向:

public function no1_evaluate_remember_form() {
    // 你的表单逻辑处理,生成$form_eva_result
    
    // 获取提交的重定向URL,默认回首页
    $redirect_url = isset( $_POST['redirect_url'] ) ? esc_url_raw( $_POST['redirect_url'] ) : home_url();
    
    // 验证URL属于当前站点,防止恶意跳转漏洞
    if ( ! wp_validate_redirect( $redirect_url, home_url() ) ) {
        $redirect_url = home_url();
    }

    wp_redirect(
        esc_url_raw(
            add_query_arg(
                array(
                    'info'     => $form_eva_result,
                    // 注意:不要直接传递整个$_POST,建议只传需要的字段,避免URL过长和敏感信息泄露
                    'response' => wp_unslash( $_POST['your_required_field'] ), // 替换为实际需要的字段名
                ),
                $redirect_url
            )
        )
    );
    exit;
}

方案二:使用HTTP Referer(备用)

如果不想修改表单结构,可以尝试读取浏览器发送的Referer头,但该方式依赖浏览器设置,兼容性不如方案一。

在处理函数中添加以下逻辑:

public function no1_evaluate_remember_form() {
    // 你的表单逻辑处理,生成$form_eva_result
    
    $redirect_url = home_url(); // 默认回首页
    if ( isset( $_SERVER['HTTP_REFERER'] ) ) {
        $referrer = esc_url_raw( $_SERVER['HTTP_REFERER'] );
        // 验证Referer属于当前站点
        if ( wp_validate_redirect( $referrer, home_url() ) ) {
            $redirect_url = $referrer;
        }
    }

    wp_redirect(
        esc_url_raw(
            add_query_arg(
                array(
                    'info'     => $form_eva_result,
                    'response' => wp_unslash( $_POST['your_required_field'] ),
                ),
                $redirect_url
            )
        )
    );
    exit;
}

安全提示

  • 禁止直接传递整个$_POST数组:URL长度有限制,且可能包含敏感信息,建议只传递必要的字段。
  • 必须验证重定向URL:使用wp_validate_redirect()确保跳转目标是本站域名,避免开放重定向攻击。

内容的提问来源于stack exchange,提问作者cortlieb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 10:27:28