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

如何通过URL参数预填充Woocommerce重置密码页面邮箱字段

WooCommerce重置密码页面预填充邮箱代码修正

你当前的代码存在两个核心问题,导致无法在重置密码页面实现邮箱预填充:

  1. 过滤器使用错误:你用了woocommerce_login_form,这个钩子是针对登录页面表单的,而重置密码(找回密码)页面的表单对应的是woocommerce_lost_password_fields钩子。
  2. 冗余的Session操作:链接里已经直接带了email参数,完全不需要通过Session中转,反而会增加不必要的复杂度。

以下是修正后的代码,直接从URL参数读取邮箱并预填充到重置密码表单,同时增加邮箱格式验证:

add_filter( 'woocommerce_lost_password_fields', 'prefill_lost_password_email' );
function prefill_lost_password_email( $fields ) {
    // 检查URL中是否存在email参数,且格式合法
    if ( isset( $_GET['email'] ) && is_email( $_GET['email'] ) ) {
        $email = esc_attr( $_GET['email'] );
        // 设置邮箱字段的默认值
        $fields['user_login']['default'] = $email;
    }
    return $fields;
}

代码说明:

  • 直接监听woocommerce_lost_password_fields钩子,精准针对重置密码页面的表单字段
  • 使用is_email()验证参数是否为合法邮箱格式,避免无效值注入
  • 用esc_attr()对邮箱参数做转义处理,确保安全
  • 去掉了Session相关代码,逻辑更简洁高效

另外,你原来的template_redirect钩子代码可以直接删除,因为已经不需要通过Session传递数据了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 23:27:28