如何在WooCommerce处理订单邮件中添加HTML注释?
解决WooCommerce处理订单邮件添加HTML注释的错误问题
错误原因
你之前的代码写法出错,是因为把PHP代码直接放在了无法解析PHP的环境中(比如WordPress后台的纯HTML邮件编辑器),或是在PHP文件中写法不符合语法规范,导致服务器将<?php识别为普通文本,触发“意外<”的致命警告。
正确实现方法
方法1:通过子主题覆盖邮件模板
WooCommerce允许通过子主题修改邮件模板,避免插件更新丢失自定义内容:
- 找到WooCommerce插件目录下的模板文件:
wp-content/plugins/woocommerce/templates/emails/customer-processing-order.php - 在你的子主题目录中创建路径:
wp-content/themes/你的子主题/woocommerce/emails/,将上述文件复制到该路径下 - 在复制后的文件开头(
<?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
相关产品推荐
相关产品推荐

