如何在PHP脚本中输出JS获取的Google Analytics trackingID
前端提取GA追踪ID后与PHP预设值的优先级替换
我已通过以下JavaScript代码从页面现有脚本中提取Google Analytics的gtag追踪ID(trackingID):
const regex = /googletagmanager\.com\/gtag\/js\?id=([^\s'"]+)/gi; const scriptTags = document.querySelectorAll('script'); let trackingID = ''; scriptTags.forEach(script => { const src = script.getAttribute('src'); if (src && src.includes('googletagmanager.com/gtag/js')) { const match = regex.exec(src); if (match && match.length > 1) { trackingID = match[1]; } } });
现在需要在两处PHP输出的脚本中实现逻辑:若trackingID存在则使用它,否则使用预设的$UA_CODE,具体修改方案如下:
1. 脚本src属性部分修改
原代码:
<script async src="<?php echo ( $local_analytics_file ?? 'https://www.googletagmanager.com/gtag/js?id=' ) . '?' . esc_html( $UA_CODE ); ?>"></script>
修改后代码
通过JS动态修改脚本的src属性,优先使用提取到的trackingID:
<!-- 先输出带默认ID的GA脚本,给它加个ID方便后续修改 --> <script id="ga-script" async src="<?php echo ( $local_analytics_file ?? 'https://www.googletagmanager.com/gtag/js?id=' ) . esc_html( $UA_CODE ); ?>"></script> <script> // 保留trackingID提取逻辑 const regex = /googletagmanager\.com\/gtag\/js\?id=([^\s'"]+)/gi; const scriptTags = document.querySelectorAll('script'); let trackingID = ''; scriptTags.forEach(script => { const src = script.getAttribute('src'); if (src && src.includes('googletagmanager.com/gtag/js')) { const match = regex.exec(src); if (match && match.length > 1) { trackingID = match[1]; } } }); // 替换GA脚本的src const gaScript = document.getElementById('ga-script'); if (trackingID) { // 从PHP获取基础URL(避免硬编码) const baseUrl = <?php echo json_encode( $local_analytics_file ?? 'https://www.googletagmanager.com/gtag/js?id=' ); ?>; gaScript.src = baseUrl + trackingID; } </script>
2. 脚本内gaID变量赋值修改
原代码:
<script> console.log('Google Analytics Tracking ID:', trackingID); window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); const configuration = JSON.parse( '<?php echo $configuration; ?>' ); const gaID = '<?php echo esc_html( $UA_CODE ); ?>'; // 需优先使用trackingID,无则用$UA_CODE </script>
修改后代码
直接在JS中通过逻辑或运算符实现优先级判断:
<script> // 保留trackingID提取逻辑 const regex = /googletagmanager\.com\/gtag\/js\?id=([^\s'"]+)/gi; const scriptTags = document.querySelectorAll('script'); let trackingID = ''; scriptTags.forEach(script => { const src = script.getAttribute('src'); if (src && src.includes('googletagmanager.com/gtag/js')) { const match = regex.exec(src); if (match && match.length > 1) { trackingID = match[1]; } } }); console.log('Google Analytics Tracking ID:', trackingID); window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); const configuration = JSON.parse( '<?php echo $configuration; ?>' ); // 优先使用trackingID,不存在则用PHP预设的$UA_CODE const gaID = trackingID || '<?php echo esc_html( $UA_CODE ); ?>'; // 示例:用gaID初始化GA配置 gtag('config', gaID, configuration); </script>
内容的提问来源于stack exchange,提问作者ahmedwp
相关产品推荐
相关产品推荐

