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

如何在WooCommerce感谢页创建发送订单至WhatsApp的链接?

修复WooCommerce感谢页的WhatsApp订单链接问题

你的代码存在几个关键问题导致无法正常运行,以下是具体修正方案:

问题分析

  • get_checkout_order_received_url 是类方法,必须加括号调用,原代码缺少执行括号
  • 变量$link未初始化就使用.=拼接,会触发PHP未定义变量警告
  • WhatsApp链接中的文本未做URL编码,空格等特殊字符会破坏链接结构
  • 未校验$order是否为合法的WC_Order对象,可能引发非预期报错

修正后的代码

add_action( 'woocommerce_thankyou', 'send_order_link' );
function send_order_link( $order_id ) {
    // 通过订单ID获取WC_Order对象
    $order = wc_get_order( $order_id );
    
    // 校验订单对象有效性,避免非法ID报错
    if ( ! $order instanceof WC_Order ) return;
    
    // 获取订单完成页的完整URL
    $order_url = $order->get_checkout_order_received_url();
    
    // 构造消息内容并做URL编码,确保特殊字符不破坏链接
    $message = urlencode( "这是我的订单:{$order_url}" );
    
    // 拼接完整的WhatsApp链接
    $whatsapp_link = "https://wa.me/5513123456789?text={$message}";
    
    // 输出安全转义后的链接HTML
    echo '<p><a href="' . esc_url( $whatsapp_link ) . '" target="_blank" rel="noopener">发送订单至WhatsApp</a></p>';
}

关键修改说明

  • 改用wc_get_order( $order_id )获取订单对象,woocommerce_thankyou钩子默认传入的是订单ID而非直接的WC_Order对象,此写法兼容性更强
  • 添加订单对象有效性校验,避免非法参数导致的错误
  • 使用urlencode()处理消息内容,确保空格、特殊字符不会破坏URL结构
  • 用esc_url()对最终链接做安全转义,符合WordPress安全开发规范
  • 直接初始化并赋值变量,避免未定义变量的警告

内容的提问来源于stack exchange,提问作者Rodrigo Sanches Wolpert

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 22:40:16