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

如何在WooCommerce处理订单邮件中添加HTML注释?

解决WooCommerce处理订单邮件添加HTML注释的错误问题

错误原因

你之前的代码写法出错,是因为把PHP代码直接放在了无法解析PHP的环境中(比如WordPress后台的纯HTML邮件编辑器),或是在PHP文件中写法不符合语法规范,导致服务器将<?php识别为普通文本,触发“意外<”的致命警告。

正确实现方法

方法1:通过子主题覆盖邮件模板

WooCommerce允许通过子主题修改邮件模板,避免插件更新丢失自定义内容:

  1. 找到WooCommerce插件目录下的模板文件:wp-content/plugins/woocommerce/templates/emails/customer-processing-order.php
  2. 在你的子主题目录中创建路径:wp-content/themes/你的子主题/woocommerce/emails/,将上述文件复制到该路径下
  3. 在复制后的文件开头(<?php代码块之后,HTML内容之前)添加以下代码:
// 输出自定义HTML注释
echo '<!--name:' . esc_html( $order->get_formatted_billing_full_name() ) . '-->' . "\n";
echo '<!--order_id:' . esc_html( $order->get_order_number() ) . '-->' . "\n";
echo '<!--email:' . esc_html( $order->get_billing_email() ) . '-->' . "\n";

或者直接在HTML区域插入PHP输出语句:

<?php echo '<!--name:' . esc_html( $order->get_formatted_billing_full_name() ) . '-->' . "\n"; ?>
<?php echo '<!--order_id:' . esc_html( $order->get_order_number() ) . '-->' . "\n"; ?>
<?php echo '<!--email:' . esc_html( $order->get_billing_email() ) . '-->' . "\n"; ?>

方法2:使用WooCommerce邮件钩子(无需修改模板)

如果你不想修改模板文件,可以在子主题的functions.php中添加以下代码,通过钩子输出注释:

add_action( 'woocommerce_email_header', 'add_custom_processing_order_comments', 10, 2 );
function add_custom_processing_order_comments( $email_heading, $email ) {
    // 仅针对处理订单邮件
    if ( $email->id !== 'customer_processing_order' ) {
        return;
    }
    
    $order = $email->object;
    echo '<!--name:' . esc_html( $order->get_formatted_billing_full_name() ) . '-->' . "\n";
    echo '<!--order_id:' . esc_html( $order->get_order_number() ) . '-->' . "\n";
    echo '<!--email:' . esc_html( $order->get_billing_email() ) . '-->' . "\n";
}

注意事项

  • 确保所有PHP代码都包裹在<?php ?>标签内,且文件为.php格式
  • 使用esc_html()函数对订单数据进行转义,避免XSS安全问题
  • 优先使用子主题或钩子方法,避免直接修改WooCommerce核心文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 06:41:08