Woocommerce自定义跟踪像素无法正确获取订单ID和订单金额求助
问题根因
- 你代码里直接把
$order(WC_Order对象)传入URL参数,对象无法直接序列化为你需要的订单ID字符串,是参数输出异常的核心原因 - 另外原代码还存在单引号不匹配、URL参数未做转义的问题,会触发额外解析错误
修正后的可用代码
//Tracking pixel for Funker360 add_action( 'woocommerce_thankyou', 'funker360_pixel' ); function funker360_pixel($order_id) { // 先判断订单对象是否有效,避免无效访问时抛出报错 if (!$order = wc_get_order($order_id)) { return; } $order_total = $order->get_total(); // 用WordPress原生方法拼接URL,自动处理转义,避免手动拼接的格式错误 $pixel_url = add_query_arg([ 'Order_Id' => $order_id, 'total' => $order_total ], 'https://urlinfoforpixel'); echo '<img style="display:none;" src="'.esc_url($pixel_url).'">'; }
改动说明
- 直接用回调自带的
$order_id参数作为订单ID即可,也可以调用$order->get_id()从订单对象中获取ID,效果一致,完全解决对象转字符串的错误 - 用WordPress原生的
add_query_arg方法拼接URL参数,自动处理参数转义和符号拼接,不需要手动拼接&符号,避免格式错误 - 增加了订单有效性判断,避免用户访问无效感谢页时抛出PHP错误
- 统一了引号格式,修复了原代码中style属性后单引号不匹配的问题
内容的提问来源于stack exchange,提问作者Core
相关产品推荐
相关产品推荐

