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

如何在WooCommerce重置密码邮件中显示用户邮箱ID?

解决WooCommerce重置密码邮件中邮箱ID无法显示的问题

看起来你在WooCommerce重置密码邮件里显示邮箱ID时碰了壁——用户名能正常展示,但替换变量后邮箱就没了踪影。我来帮你拆解下问题原因和可行的解决办法:

问题根源

你当前代码里用了$user_email变量,但在WooCommerce重置密码邮件的默认模板上下文里,这个变量并没有被正确传递或初始化。默认情况下,邮件模板里会提供**$user用户对象**,而非直接的$user_email变量,调用未定义的变量自然会导致内容无法显示。

解决方案

根据你的需求,分两种常见场景给出具体代码:

1. 直接修改邮件模板文件(适合习惯改模板的开发者)

如果你是直接修改WooCommerce的重置密码模板(路径一般为wp-content/plugins/woocommerce/templates/emails/customer-reset-password.php,建议先复制到主题目录下修改,避免插件更新覆盖修改),可以这样写:

// 显示用户名
printf( esc_html__( 'Username: %s', 'woocommerce' ), esc_html( $user->user_login ) );
echo '<br>'; // 换行优化排版
// 显示邮箱ID
printf( esc_html__( 'Email: %s', 'woocommerce' ), esc_html( $user->user_email ) );

这里通过$user对象直接调用user_login(用户名)和user_email(邮箱)属性,确保能获取到准确的用户数据。

2. 使用钩子函数修改(推荐,无需改动模板)

如果你不想直接修改模板文件,更推荐用WooCommerce的woocommerce_reset_password_message钩子来添加内容,这样插件更新时不会丢失你的修改:

add_filter( 'woocommerce_reset_password_message', 'add_email_to_reset_password_email', 10, 2 );
function add_email_to_reset_password_email( $message, $user ) {
    // 组装用户名和邮箱的自定义内容
    $custom_content = sprintf( esc_html__( 'Username: %s', 'woocommerce' ), esc_html( $user->user_login ) ) . "\r\n";
    $custom_content .= sprintf( esc_html__( 'Email: %s', 'woocommerce' ), esc_html( $user->user_email ) ) . "\r\n\r\n";
    
    // 将自定义内容添加到原有邮件消息的开头
    return $custom_content . $message;
}

把这段代码放到你的主题functions.php文件里,或者自定义插件中就能生效。

额外小提示

  • 不用担心$user对象的存在性——在重置密码邮件的上下文里,这个对象是默认传递的,肯定能获取到用户数据。
  • 你用esc_html()包裹输出内容的做法非常正确,能有效避免XSS安全问题,继续保持这个好习惯!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:01:44