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

WooCommerce订单邮件中™(™)符号显示为图片的解决求助

解决WooCommerce订单邮件中™符号显示为图片的问题

这个问题我之前帮不少开发者处理过,核心原因通常是WooCommerce或第三方主题/插件对邮件内容做了额外的转义或自动转换(比如把特殊符号替换成表情图片)。你直接替换实体没生效,大概率是因为内容在邮件生成过程中被二次处理了。给你几个逐步排查和解决的方案:

方案一:用钩子强制在邮件中修正符号

最稳妥的方式是通过WooCommerce的过滤钩子,专门针对邮件环境处理产品名称。把下面的代码添加到你的主题functions.php文件里,或者用Code Snippets插件来管理(避免主题更新丢失代码):

add_filter( 'woocommerce_order_item_name', 'fix_trademark_symbol_in_emails', 10, 3 );
function fix_trademark_symbol_in_emails( $item_name, $item, $is_visible ) {
    // 只在邮件场景下执行(排除前端订单详情页)
    if ( ! is_wc_endpoint_url() && is_email() ) {
        // 覆盖所有可能的错误形式:原实体、被转义的实体、被替换成的图片标签
        $item_name = preg_replace( array( '/&amp;#x2122;/', '/<img[^>]*alt="™"[^>]*>/i' ), '&#x2122;', $item_name );
    }
    return $item_name;
}

这个函数会在邮件生成时,把被转义的&amp;#x2122;还原成&#x2122;,同时把可能被替换成的图片标签也换回正确的实体符号。

方案二:排查第三方插件/主题的干扰

有时候是主题或插件的自动转换功能搞的鬼,比如一些富文本编辑器插件、表情替换插件,甚至某些邮件美化插件。你可以:

  • 临时切换到WooCommerce官方默认主题Storefront,测试订单邮件是否正常
  • 禁用所有非WooCommerce的插件,逐个重新启用,找到触发问题的插件
  • 如果找到是某个插件导致的,可以查看该插件的设置,是否有“自动转换特殊字符”或“表情替换”的开关,把它关掉

方案三:尝试替换为十进制实体或直接输入符号

十六进制的&#x2122;有时候会被某些转义逻辑影响,你可以试试:

  • 把产品标题里的&#x2122;替换成十进制的实体&#8482;
  • 或者直接在产品标题里输入™符号(确保你的网站数据库和页面编码都是UTF-8,避免乱码)

方案四:直接修改邮件模板(进阶)

如果上面的方法都不行,你可以直接修改WooCommerce的邮件模板:

  1. 复制WooCommerce插件目录下的templates/emails/email-order-items.php文件
  2. 粘贴到你的主题目录下的woocommerce/emails/文件夹里(如果没有就新建)
  3. 在模板中找到输出产品名称的代码段,通常是:
    echo wp_kses_post( apply_filters( 'woocommerce_order_item_name', $item->get_name(), $item, false ) );
    
  4. 修改为:
    $fixed_name = str_replace( '&amp;#x2122;', '&#x2122;', $item->get_name() );
    echo wp_kses_post( apply_filters( 'woocommerce_order_item_name', $fixed_name, $item, false ) );
    

这样直接在模板层面处理转义问题,绕过可能的二次过滤。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:30:20