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

如何在WooCommerce新订单邮件中添加用户元数据作为占位符

修正WooCommerce新订单邮件自定义占位符代码

原代码存在的问题

  • 未定义$user变量,无法正确获取用户ID
  • 错误调用$order->get_user_meta(),WC_Order类不存在该方法
  • 第四行的$wpcf_sales_rep变量未被使用,确实可以删除

修正后的代码

function wpa_filter_email_format_string( $string, $email ) {
    // 获取邮件对应的订单对象
    $order = $email->object;
    
    // 确保订单对象有效,避免非订单邮件触发报错
    if ( ! $order instanceof WC_Order ) {
        return $string;
    }
    
    // 获取订单关联的用户ID
    $user_id = $order->get_user_id();
    
    // 处理访客订单(无用户ID)的情况,返回默认文本
    $sales_rep = $user_id ? get_user_meta( $user_id, 'wpcf_sales_rep', true ) : '无销售代表';
    
    // 定义自定义占位符映射
    $new_placeholders = array(
        '{_sales_rep}' => $sales_rep,
    );
    
    // 替换邮件内容中的占位符并返回
    return str_replace( array_keys( $new_placeholders ), array_values( $new_placeholders ), $string );
}
add_filter( 'woocommerce_email_format_string', 'wpa_filter_email_format_string', 20, 2 );

关键修正说明

  1. 增加类型检查:确保仅在处理WC_Order对象时执行逻辑,避免其他邮件类型触发错误
  2. 正确获取用户ID:通过$order->get_user_id()从订单对象中提取关联用户ID
  3. 兼容访客订单:针对未登录用户下单的场景,设置默认显示文本
  4. 修复元数据获取方式:使用原生get_user_meta()函数获取用户自定义字段值

使用方法

将代码添加到当前主题的functions.php文件(或自定义代码插件)后,在WooCommerce后台的「新订单」邮件编辑界面中,插入{_sales_rep}占位符即可显示对应销售代表信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:15:50