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

如何为WooCommerce客户发票邮件添加底部Pay Now按钮并修复参数错误

问题解决:WooCommerce邮件添加Pay Now按钮时的参数错误

错误原因

你使用的woocommerce_email_footer钩子默认仅传递1个参数($email对象),但你在add_action里声明要传递2个参数,同时函数定义要求接收$order和$email两个参数,导致实际传入参数数量不匹配,触发致命错误。另外你的HTML链接代码存在语法错误,引号使用混乱。

修复后的代码

// Add Pay Now button to invoice email
add_action('woocommerce_email_footer', 'rnr_customer_order_invoice_paynow', 20, 1 );

function rnr_customer_order_invoice_paynow( $email ) {   
    // 确认邮件是客户发票类型,且邮件关联的对象是订单
    if ( $email->id == 'customer_invoice' && is_a( $email->object, 'WC_Order' ) ) { 
        $order = $email->object;
        $pay_now_url = esc_url( $order->get_checkout_payment_url() );
 
        // 输出正确的Pay Now按钮HTML(附带基础样式提升显示效果)
        echo '<a href="' . $pay_now_url . '" style="padding: 10px 20px; background-color: #007cba; color: white; text-decoration: none; border-radius: 4px;">Pay Now</a>';
    }
}

关键修正点

  • 调整add_action的最后一个参数为1,匹配钩子实际传递的参数数量
  • 通过$email->object获取订单对象,这是WooCommerce邮件类中存储关联订单的标准属性
  • 修复HTML链接的语法错误,同时添加基础内联样式让按钮更符合邮件场景(可选)
  • 增加is_a()判断,确保获取的对象是有效的订单实例,避免潜在报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:50:22