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

WooCommerce感谢页嵌入联盟链接无法传递订单参数问题

问题分析与解决方案

你的核心问题是PHP变量没有正确传递到JavaScript的iframe链接中,同时代码存在冗余逻辑和安全隐患,具体问题与修复方案如下:

1. 变量传递失败的核心原因

你在JavaScript的iframe.src中直接写了$order_id和$order_total,但这些是PHP变量——在单引号包裹的字符串里,PHP不会解析这些变量,最终生成的链接里参数值就是字符串$order_id和$order_total,而非实际的订单号与金额。

必须通过PHP输出的方式,把变量值注入到JavaScript代码中。

2. 冗余代码与安全问题

  • 你同时注册了woocommerce_thankyou和wp_head两个钩子执行相同逻辑,完全没必要;且wp_head里通过$_GET['order_id']获取订单号存在安全风险(参数可被篡改),woocommerce_thankyou钩子本身会直接传递合法的$order_id,更可靠。

3. 修复后的精简代码

只保留woocommerce_thankyou钩子的逻辑即可,修正变量传递部分:

add_action( "woocommerce_thankyou", "xlwcty_thank_you_script", 20 );

if ( ! function_exists( 'xlwcty_thank_you_script' ) ) {
    function xlwcty_thank_you_script( $order_id ) {
        if ( $order_id <= 0 ) return;
        
        $order = wc_get_order( $order_id );
        if ( ! $order instanceof WC_Order ) return;

        $order_number = $order->get_id();
        $order_total  = $order->get_total();
        // 可选:如果需要固定小数位数,用number_format处理
        // $order_total = number_format($order_total, 2);
        ?>
        <script type="text/javascript">
            const iframe = document.createElement("iframe");
            iframe.style.display = "none";
            // 用PHP输出变量值到URL参数中
            iframe.src = 'https://randomaddress.randomdomain.org/aff_l?offer_id=123&adv_sub=<?php echo esc_attr($order_number); ?>&amount=<?php echo esc_attr($order_total); ?>';
            document.body.appendChild(iframe);
        </script>
        <?php
    }
}

关键修复点说明

  • 使用<?php echo esc_attr($order_number); ?>和<?php echo esc_attr($order_total); ?>将PHP变量值输出到JS的URL中,esc_attr()用于防止XSS攻击和URL参数乱码。
  • 移除冗余的wp_head钩子逻辑,避免重复加载iframe和安全风险。
  • 简化判断逻辑,提前返回减少代码嵌套层级。

测试验证方法

  1. 完成一笔测试订单,到达感谢页后右键查看页面源代码,搜索iframe的src链接,确认adv_sub和amount参数已替换为实际的订单号与金额。
  2. 查看联盟服务商的统计面板,确认数据是否正常接收。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 05:05:06