WordPress中基于Google AdWords关键词URL设置Cookie的技术问询
解决WordPress中AdWords来源至表单提交的追踪方案
你的需求很明确:合作伙伴投放AdWords但拿不到广告系列URL,要在用户访问时识别AdWords参数设置Cookie,表单提交时带上这些数据做来源追踪。下面给你两种可行方案,还有各自的优劣势分析:
一、PHP方案(WordPress环境首选,稳定性更高)
1. 识别AdWords参数并设置Cookie
AdWords跳转通常会携带gclid、utm_source、utm_medium、utm_campaign、utm_term这些参数,我们可以在WordPress初始化时检测这些参数,仅当用户还没有来源Cookie时才设置(避免后续页面跳转覆盖原始来源)。
把这段代码加到你的主题functions.php文件里:
function set_adwords_source_cookie() { // 检查是否已存在AdWords来源Cookie,避免覆盖原始来源 if (!isset($_COOKIE['adwords_source'])) { // 定义需要捕获的AdWords相关参数 $target_params = ['gclid', 'utm_source', 'utm_medium', 'utm_campaign', 'utm_term']; $source_data = []; // 遍历参数,收集URL中存在的字段 foreach ($target_params as $param) { if (isset($_GET[$param])) { $source_data[$param] = sanitize_text_field($_GET[$param]); } } // 如果捕获到AdWords参数,设置有效期30天的Cookie(可按需调整时长) if (!empty($source_data)) { $cookie_value = json_encode($source_data); setcookie( 'adwords_source', $cookie_value, time() + 30 * 24 * 60 * 60, // 30天有效期 COOKIEPATH, COOKIE_DOMAIN, is_ssl() ); } } } // 在WordPress初始化阶段执行Cookie设置逻辑 add_action('init', 'set_adwords_source_cookie');
2. 表单提交时关联Cookie数据
如果用的是Contact Form 7这类主流表单插件,可以通过钩子把Cookie数据附加到提交内容里:
function attach_adwords_data_to_cf7_submission($posted_data, $contact_form) { // 读取已设置的AdWords来源Cookie if (isset($_COOKIE['adwords_source'])) { $source_data = json_decode(stripslashes($_COOKIE['adwords_source']), true); if (is_array($source_data)) { // 将来源数据添加到提交字段中 $posted_data['adwords_source'] = print_r($source_data, true); // 如果你需要单独提取某个参数(比如utm_campaign),可以单独赋值 // $posted_data['utm_campaign'] = $source_data['utm_campaign'] ?? '未识别'; } } return $posted_data; } add_filter('wpcf7_posted_data', 'attach_adwords_data_to_cf7_submission', 10, 2);
之后在你的CF7表单里添加一个隐藏字段:
[hidden adwords_source]
这样表单提交后,后台邮件或者数据库里就能看到用户的AdWords来源信息了。
如果是自定义开发的表单,在处理提交的PHP代码里直接读取$_COOKIE['adwords_source']即可,比如:
if (isset($_COOKIE['adwords_source'])) { $adwords_data = json_decode(stripslashes($_COOKIE['adwords_source']), true); // 这里可以把$adwords_data存储到数据库,或者拼接到通知邮件里 }
二、JavaScript/jQuery方案(快速实现,适合临时测试)
如果你不想修改后端代码,也可以用前端JS来实现,但要注意:如果用户浏览器禁用JavaScript,这套逻辑就会失效。
1. 前端检测URL参数并设置Cookie
把这段代码放到主题的footer.php里(或者通过WordPress的wp_enqueue_script加载自定义JS文件):
jQuery(document).ready(function($) { // 检查是否已存在adwords_source Cookie if (!document.cookie.includes('adwords_source')) { const targetParams = ['gclid', 'utm_source', 'utm_medium', 'utm_campaign', 'utm_term']; const sourceData = {}; const urlParams = new URLSearchParams(window.location.search); // 收集URL中的AdWords参数 targetParams.forEach(param => { if (urlParams.has(param)) { sourceData[param] = urlParams.get(param); } }); // 如果有有效数据,设置30天有效期的Cookie if (Object.keys(sourceData).length > 0) { const cookieValue = JSON.stringify(sourceData); const expiry = new Date(); expiry.setTime(expiry.getTime() + 30 * 24 * 60 * 60 * 1000); document.cookie = `adwords_source=${encodeURIComponent(cookieValue)}; expires=${expiry.toUTCString()}; path=/`; } } });
2. 表单提交时注入Cookie数据
如果是自定义表单,在提交前把Cookie数据添加到隐藏字段:
jQuery('#your-form-id').submit(function(e) { if (document.cookie.includes('adwords_source')) { // 提取Cookie值 const cookieRow = document.cookie.split('; ').find(row => row.startsWith('adwords_source=')); const cookieValue = cookieRow.split('=')[1]; const sourceData = JSON.parse(decodeURIComponent(cookieValue)); // 添加隐藏字段到表单 $(this).append(`<input type="hidden" name="adwords_source" value="${encodeURIComponent(JSON.stringify(sourceData))}">`); } });
如果是Contact Form 7,可以用它的专属JS钩子:
document.addEventListener('wpcf7submit', function(event) { if (document.cookie.includes('adwords_source')) { const cookieRow = document.cookie.split('; ').find(row => row.startsWith('adwords_source=')); const cookieValue = cookieRow.split('=')[1]; const sourceData = JSON.parse(decodeURIComponent(cookieValue)); // 将来源数据追加到表单提交数据中 event.detail.contactFormData.push({name: 'adwords_source', value: JSON.stringify(sourceData)}); } }, false);
三、方案选择建议
- 优先选PHP方案:服务器端处理不受前端JS状态影响,数据准确性更高,完全适配WordPress的生态,适合企业级的追踪需求。
- JS方案适合快速测试:不需要修改后端代码,上线快,但存在JS禁用导致追踪失效的风险,只能作为临时过渡方案。
内容的提问来源于stack exchange,提问作者S. Jensen
相关产品推荐
相关产品推荐

