WooCommerce:为订单接收回调URL追加订单及订单项参数并获取值
WooCommerce 感谢页URL追加订单及订单项参数解决方案
我来帮你完善这段代码,实现从感谢页URL获取参数并追加订单/订单项参数的需求。下面是完整可运行的解决方案:
add_filter('woocommerce_get_checkout_order_received_url', 'override_return_url', 10, 2); function override_return_url($return_url, $order){ // 1. 解析原有URL的查询参数,避免丢失已存在的参数 $url_parts = wp_parse_url($return_url); parse_str($url_parts['query'] ?? '', $existing_params); // 2. 追加订单级别的核心参数 $order_params = array( 'order_id' => $order->get_id(), 'order_total' => $order->get_total(), 'order_status' => $order->get_status() ); // 3. 收集订单项参数(SKU、数量、价格等) $item_params = array(); foreach($order->get_items() as $item_id => $item) { // 获取当前订单项对应的产品(支持变体产品) $product = $item->get_product(); if(!$product) continue; // 为每个商品生成唯一的参数键,避免冲突 $prefix = 'product_' . $item->get_product_id() . '_'; $item_params[$prefix . 'sku'] = $product->get_sku(); $item_params[$prefix . 'quantity'] = $item->get_quantity(); $item_params[$prefix . 'price'] = $item->get_subtotal(); } // 4. 合并所有参数:原有参数 + 订单参数 + 订单项参数 $new_params = array_merge($existing_params, $order_params, $item_params); // 5. 生成新的返回URL return add_query_arg($new_params, $url_parts['scheme'] . '://' . $url_parts['host'] . $url_parts['path']); }
代码说明:
- 保留原有参数:通过
wp_parse_url和parse_str解析原URL的查询参数,确保不会覆盖或丢失之前已存在的参数 - 订单级参数:追加了订单ID、订单总额、订单状态三个核心参数,你可以根据需求增减(比如添加订单创建时间)
- 订单项参数:遍历每个订单项,获取对应产品的SKU、购买数量、单品小计,用产品ID作为参数前缀,避免不同商品的参数冲突
- 安全生成URL:使用WooCommerce/WordPress内置的
add_query_arg函数生成URL,自动处理参数编码,避免URL格式错误
在感谢页获取参数的方法:
当用户跳转到感谢页后,你可以通过$_GET全局变量获取这些参数,记得做好安全过滤:
// 获取订单ID $order_id = isset($_GET['order_id']) ? sanitize_text_field($_GET['order_id']) : ''; // 获取某个商品的SKU(假设产品ID是123) $product_123_sku = isset($_GET['product_123_sku']) ? sanitize_text_field($_GET['product_123_sku']) : ''; // 获取订单总额 $order_total = isset($_GET['order_total']) ? sanitize_text_field($_GET['order_total']) : '';
注意事项:
- 如果你的网站启用了URL重写(伪静态),感谢页的URL格式可能是
example.com/checkout/order-received/123/,此时原有参数可能在URL路径中,代码依然能正确解析 - 对于敏感参数(比如订单总额),如果需要更高安全性,可以考虑对参数进行加密处理,避免前端篡改
内容的提问来源于stack exchange,提问作者netelie
相关产品推荐
相关产品推荐

