如何在WooCommerce处理中邮件添加含订单数据的链接?
修复WooCommerce邮件中带Base64编码订单数据的链接代码
你的代码存在三个关键语法和格式错误,修改方案如下:
错误点分析
- 字符串嵌套未转义:echo语句用双引号包裹HTML内容,但HTML的href属性也用了双引号,导致PHP语法解析失败。
- 多余分号:
$order->billing_email;和$order->get_order_number();中的分号属于冗余,会打断表达式执行逻辑。 - URL参数分隔符错误:链接开头的第一个参数应该用
?作为起始符,而非&,否则服务器可能无法正确识别参数结构。
修正后的代码
// 先单独处理订单数据,提升可读性 $buyer_email = urlencode(base64_encode($order->billing_email)); $order_number = urlencode(base64_encode($order->get_order_number())); // 输出格式化后的链接 echo '<a href="https://www.customlink.html?buyerEmail=' . $buyer_email . '&shopOrderID=' . $order_number . '">Link</a>';
也可以用HEREDOC写法(更易维护):
$buyer_email = urlencode(base64_encode($order->billing_email)); $order_number = urlencode(base64_encode($order->get_order_number())); echo <<<HTML <a href="https://www.customlink.html?buyerEmail={$buyer_email}&shopOrderID={$order_number}">Link</a> HTML;
额外提醒
- 建议在WooCommerce邮件钩子(如
woocommerce_email_before_order_table)中使用这段代码时,确认$order对象已被正确传递到当前作用域。
内容的提问来源于stack exchange,提问作者maw
相关产品推荐
相关产品推荐

