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

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实体转义错误
    你代码里用了&lt;p&gt;这类转义字符,在HTML格式的邮件中,这些字符会被直接显示成文本,而不会解析为HTML标签。应该直接使用原生的<p>标签。

  • 子主题未激活或文件有语法错误

    • 确认当前使用的是添加了代码的子主题,若激活的是父主题,代码不会生效。
    • 检查子主题functions.php文件的语法:如果文件前面的代码存在括号不闭合、分号遗漏等错误,会导致后续代码无法执行。可以把这段代码移到文件最末尾,或者排查前面的语法问题。
  • Germanized Pro插件覆盖了邮件模板
    Germanized Pro可能替换了WooCommerce默认的订单完成邮件模板,导致woocommerce_email_before_order_table钩子没有被调用。你可以:

    1. 检查插件是否提供了专属的邮件钩子,替换为对应钩子;
    2. 找到WooCommerce默认的customer-completed-order.php邮件模板,复制到子主题的woocommerce/emails目录下,直接在模板文件中添加需要的文本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 20:35:04