如何在WooCommerce待处理订单邮件中添加动态可点击支付链接
问题解决方案
以下是修正后可直接使用的完整代码:
add_action( 'woocommerce_email_before_order_table', 'customer_note_email_before_order_table', 10, 4 ); function customer_note_email_before_order_table( $order, $sent_to_admin, $plain_text, $email ){ // 仅针对客户待处理订单邮件触发 if ( $email->id === 'customer_on_hold_order' ) : // URL前缀固定部分 $first_url_part = "https://www.mypaymentsite.com/cgi-bin/webscr?&cmd=_xclick&business=89000¤cy_code=USD&amount="; // 获取订单纯数值总金额 $order_total = $order->get_total(); // URL后缀固定部分 $last_url_part = "&item_name=ebook"; // 拼接完整支付链接(PHP使用.作为字符串拼接运算符) $payment_link = $first_url_part . $order_total . $last_url_part; // 输出支付区域,渲染可点击超链接 echo '<h2>' . __("Direct Payment Link", "woocommerce") . '</h2> <div style="margin-bottom: 40px;"> <table cellspacing="0" cellpadding="0" style="width: 100%; color: #636363; border: 2px solid #e5e5e5;" border="0"> <tr><td><p><a href="'. esc_url($payment_link) .'">点击此处直接支付订单</a></p></td></tr> </table></div>'; endif; }
核心修改点说明
- 修复字符串拼接语法错误:PHP中多个字符串拼接需要使用
.运算符,而非直接并列变量 - 新增可点击链接渲染逻辑:用
<a>标签绑定支付链接地址,锚文本设置为指定文案,同时使用esc_url()对链接做安全转义,避免输出异常 - 优化邮件触发判断逻辑:简化单值ID判断的写法,不需要调用
in_array
内容的提问来源于stack exchange,提问作者gilbaO
相关产品推荐
相关产品推荐

