如何从WooCommerce结账页提取数据至Google Customer Reviews代码片段
WooCommerce结账页部署Google Customer Reviews动态数据解决方案
1. 查看订单成功页的可用对象数据
注意:用户未完成下单时的结账页(checkout)没有生成有效订单对象,你需要在**订单成功页(thankyou页)**调试和部署代码。查看对象的方法如下:
- 临时调试输出:找到WooCommerce的订单成功模板文件
woocommerce/templates/checkout/thankyou.php,在合适位置添加以下代码(建议用子主题覆盖模板,避免主题更新丢失):
// 打印订单对象的所有结构化数据 echo '<pre>'; print_r($order->get_data()); echo '</pre>';
访问订单成功页后,就能看到订单对象包含的所有字段(比如账单邮箱、订单号、配送地址等)。
- 官方方法参考:直接查看WooCommerce的
WC_Order类文档,里面列出了所有安全的getter方法(比如get_billing_email()、get_order_number()),这些是官方推荐的调用方式,比直接访问对象属性更稳定。
2. 调用对象提取数据并嵌入Google代码
通过WooCommerce的钩子实现动态数据填充,无需硬编码。推荐用woocommerce_thankyou钩子(该钩子会自动传入订单ID),示例代码如下:
add_action('woocommerce_thankyou', 'embed_google_customer_reviews'); function embed_google_customer_reviews($order_id) { // 获取订单对象 $order = wc_get_order($order_id); if (!$order) return; // 提取所需动态数据 $customer_email = $order->get_billing_email(); $order_number = $order->get_order_number(); // 格式化订单创建时间为Google要求的ISO 8601格式 $order_date = $order->get_date_created()->format('c'); $shipping_country = $order->get_shipping_country(); ?> <!-- Google Customer Reviews 动态代码 --> <script src="https://apis.google.com/js/platform.js?onload=renderOptIn" async defer></script> <script> window.renderOptIn = function() { window.gapi.load('surveyoptin', function() { window.gapi.surveyoptin.render({ "merchant_id": "你的商家ID", // 替换为你的Google商家ID "order_id": "<?php echo esc_js($order_number); ?>", "email": "<?php echo esc_js($customer_email); ?>", "delivery_country": "<?php echo esc_js($shipping_country); ?>", "estimated_delivery_date": "<?php echo esc_js($order_date); ?>" // 按需添加其他参数 }); }); } </script> <?php }
关键说明:
- 把代码添加到子主题的
functions.php文件或自定义插件中,不要直接修改核心文件。 - 用
esc_js()函数转义输出的动态数据,防止XSS安全问题。 - 所有订单数据都通过
WC_Order类的官方getter方法获取,保证兼容性和稳定性。
内容的提问来源于stack exchange,提问作者SirMario
相关产品推荐
相关产品推荐

