WooCommerce邮件模板:移除邮件正文外的{site_title}
针对你遇到的订单邮件主正文外显示{site_title}的问题,可按以下步骤排查解决:
检查主题/自定义插件的钩子代码:
前往主题目录下的functions.php文件,或你使用的自定义功能插件代码中,搜索woocommerce_email_header、woocommerce_email_footer、woocommerce_email_before_order_table这类邮件相关钩子,查看是否有代码直接输出了{site_title}字符串,找到后删除对应代码段即可。排查第三方插件冲突:
暂时禁用所有非WooCommerce官方的插件,然后测试下单流程并查看邮件。若问题消失,再逐个重新启用插件,每次启用后测试邮件,定位到引发问题的插件,可尝试更新该插件或联系插件开发者获取修复方案。重置邮件模板设置:
进入WordPress后台的「WooCommerce > 设置 > 邮件」页面,找到对应的订单邮件模板(如“处理中订单”“已完成订单”等),点击模板下方的「恢复默认」按钮,保存设置后重新测试邮件。清理服务器模板缓存:
部分服务器会启用OPcache、Redis等缓存机制缓存PHP模板文件,即便你删除了自定义模板,缓存的旧内容仍可能生效。可联系主机服务商清理服务器的PHP模板缓存,或自行在服务器控制面板中操作清除缓存。强制替换错误输出(终极方案):
若上述方法均无效,可通过添加代码强制过滤掉{site_title}内容。将以下代码添加到主题的functions.php文件中:
add_action('woocommerce_email_header', 'start_capture_email_content', 1); function start_capture_email_content() { ob_start(); } add_action('woocommerce_email_footer', 'filter_and_output_email_content', 99); function filter_and_output_email_content() { $email_html = ob_get_clean(); // 移除多余的{site_title}字符串 $email_html = str_replace('{site_title}', '', $email_html); echo $email_html; }
这段代码会捕获邮件的所有输出内容,过滤掉{site_title}后再输出。
内容的提问来源于stack exchange,提问作者Jason

