Woocommerce+Germanized Pro插件:订单完成邮件添加内容失效问题
代码未生效的原因及修复方案
可能的原因及对应解决办法
未限定邮件类型
woocommerce_email_before_order_table钩子会在所有包含订单表格的邮件中触发(比如管理员订单通知、用户处理中订单邮件等),但你只需要在「订单完成」邮件中显示内容。如果没加判断,可能代码执行了但你没在目标邮件里看到。
修复:添加邮件类型判断,仅在用户订单完成邮件中执行:add_action( 'woocommerce_email_before_order_table', 'add_prepaid_value_to_mail', 10, 4 ); function add_prepaid_value_to_mail( $order, $sent_to_admin, $plain_text, $email ) { // 仅针对订单完成邮件 if ( $email->id === 'customer_completed_order' ) { echo '<p>Your new prepaid value:</p>' ; } }HTML实体转义错误
你代码里用了<p>这类转义字符,在HTML格式的邮件中,这些字符会被直接显示成文本,而不会解析为HTML标签。应该直接使用原生的<p>标签。子主题未激活或文件有语法错误
- 确认当前使用的是添加了代码的子主题,若激活的是父主题,代码不会生效。
- 检查子主题
functions.php文件的语法:如果文件前面的代码存在括号不闭合、分号遗漏等错误,会导致后续代码无法执行。可以把这段代码移到文件最末尾,或者排查前面的语法问题。
Germanized Pro插件覆盖了邮件模板
Germanized Pro可能替换了WooCommerce默认的订单完成邮件模板,导致woocommerce_email_before_order_table钩子没有被调用。你可以:- 检查插件是否提供了专属的邮件钩子,替换为对应钩子;
- 找到WooCommerce默认的
customer-completed-order.php邮件模板,复制到子主题的woocommerce/emails目录下,直接在模板文件中添加需要的文本。
内容的提问来源于stack exchange,提问作者Georg Huber
相关产品推荐
相关产品推荐

