如何在WooCommerce订单中存储Google Adwords gclid参数?
如何将Google AdWords GCLID参数存储到WooCommerce订单中
步骤1:捕获GCLID并保存到用户会话
当用户通过带gclid参数的链接访问网站时,先将参数存入WordPress会话,确保下单时能获取到该值:
add_action('template_redirect', 'store_gclid_in_session'); function store_gclid_in_session() { if (isset($_GET['gclid']) && !empty($_GET['gclid'])) { session_start(); $_SESSION['gclid'] = sanitize_text_field($_GET['gclid']); } }
步骤2:将GCLID写入WooCommerce订单
用户点击下单按钮完成结算时,从会话中取出gclid,并保存为订单的自定义元数据:
add_action('woocommerce_checkout_create_order', 'save_gclid_to_order', 10, 2); function save_gclid_to_order($order, $data) { if (isset($_SESSION['gclid']) && !empty($_SESSION['gclid'])) { $order->update_meta_data('_gclid', $_SESSION['gclid']); // 可选:下单后清空会话中的GCLID,避免后续订单重复使用 unset($_SESSION['gclid']); } }
步骤3:在后台订单页面显示GCLID
让管理员在WooCommerce后台订单详情页能看到该字段,添加以下代码:
add_action('woocommerce_admin_order_data_after_billing_address', 'display_gclid_in_admin_order', 10, 1); function display_gclid_in_admin_order($order) { $gclid = $order->get_meta('_gclid'); if (!empty($gclid)) { echo '<div class="address"><p><strong>' . __('GCLID:', 'woocommerce') . '</strong> ' . esc_html($gclid) . '</p></div>'; } }
数据库存储说明
WooCommerce会自动将_gclid元数据存储到wp_postmeta表中:
post_id对应WooCommerce订单的IDmeta_key为_gclidmeta_value为捕获到的GCLID参数值
注意事项
- 代码可添加到当前主题的
functions.php文件,或封装为自定义插件(推荐后者,避免主题更新丢失代码) - 确保主机支持WordPress会话功能,若会话异常可检查
wp-config.php中的会话配置 - 测试时需通过带
gclid参数的URL进入网站,完成下单后验证后台订单及数据库记录
内容的提问来源于stack exchange,提问作者Manisha Thakur
相关产品推荐
相关产品推荐

