本文约 5,501 字,预计阅读 14 分钟。文中命令与配置均经过实测,可直接参考执行。
引言:装上统计插件三个月,后台多了两个新菜单、四条推广通知
WordPress 上接 Google Analytics 曾经只有一件事:把一段 gtag.js 塞进 head。现在的选择却让人挑花眼——MonsterInsights、GA Google Analytics、Site Kit、GTM4WP、独立的 Headers and Footer Code……它们做的事看起来一样,差别在副作用。
常见的抱怨来自两类:一类是”后台被污染”——装完 MonsterInsights 后 wp-admin 多了 Reports 菜单、通知横幅、插件推广侧栏,编辑一进后台就被这些/adminnotice 打扰;另一类是”数据对不上”——插件声称自动追踪下载和外链,但 GA4 后台的事件名乱七八糟(download、file_download、generate_download 三种并存),根本没法建报表。
本文聚焦两个典型的免费/入门方案:MonsterInsights(功能最全、商业化最重)与 GA Google Analytics(Jeff Chandler 维护,定位极简),从注入方式、事件能力、性能开销三个维度拆解,最后给出替换/取舍的判断依据。
原理分析:差别不在”能不能埋点”,而在”埋多深、谁来控制”
| 维度 | MonsterInsights | GA Google Analytics |
|---|---|---|
| 注入方式 | wp_head 输出自己的 frontend.js(含 interactions tracking),带 gtag 加载器 |
wp_head 直接输出精简 gtag snippet |
| 前端资源 | 约 20–40 KB JS + 1–2 个请求(取决于开启的 addon) | 几乎为零(内联 snippet) |
| 自动事件 | 支持下载、外链、affiliate link、表单转化、滚动深度、ecommerce | 支持下载/外链/邮件点击等基础项(内置 options) |
| 需要账号 | 需要在 monsterinsights.com 注册并 OAuth 授权 | 只需填 Measurement ID(G-XXXX) |
| 后台报表 | 在 wp-admin 内嵌自定义报表 | 无后台报表(只看 GA 官方) |
| 商业化 | 免费版定期推算子 Payment for Pro、后台通知较多 | 免费版几乎无打扰 |
技术上要抓住两个要点:
第一,”自动事件”是靠 JS 事件委托实现的。 MonsterInsights 的 frontend.js 会在 DOM 上监听 mousedown/click,判断点击目标的 href 是否匹配文件扩展名正则(如 /\.(zip|pdf|docx?|pptx?|xlsx?)$/i)或者是否外域,匹配就推一条事件。这意味着:JS 是异步加载的,如果用户点得太快,或者目标链接由 JS 动态生成(比如 AJAX 搜索结果),事件就可能漏。理解这一点,才能接受”自动统计的下载数总是比服务器日志少”。
第二,GA4 的事件参数与 UA 时代完全不同。 在 Universal Analytics 里自定义事件是 category/action/label 三段;GA4 改成了扁平的 event_name + 若干自定义参数。MonsterInsights 为了兼容,把历史 category 映射到了 event_category 之类的参数上。这导致同一个”下载”行为,在不同版本插件里上报的事件名不同,做报表前必须先看清楚实际打出来的 event_name。
事件名的规范化方法见:GA4 事件追踪与配置
保姆级实操
步骤 1:安装与最小配置对比
GA Google Analytics(插件目录搜索 “GA Google Analytics”,作者 Jeff Chandler):
- 后台「Settings → Google Analytics」,在 GA Property ID 填入
G-XXXXXXXXXX - Current Version 选 GA4(不要留 Universal Analytics)
- 加载位置选 Head(默认),如需延迟加载可勾延迟 4 秒选项
- 保存即可,不需要任何外部账号
MonsterInsights:
- 安装后必须走一遍 Setup Wizard,用 Google 账号 OAuth 授权
- 在「Insights → Settings → General」确认已选中正确的 GA4 property
- 「Engagement」标签页里勾选想要的自动事件(Downloads / Outbound Links / Affiliate Links / Scroll Depth)
- 如果用 WooCommerce 需要额外安装 eCommerce addon(免费版不含)
步骤 2:确认注入是否重复
多个统计源同时注入是数据翻倍的主因。用这条命令检查:
# 同一页面出现多个 gtag 加载器 = 重复统计
wp_option_check=$(curl -s https://example.com/ | grep -o 'googletagmanager.com/gtag/js?id=[A-Z0-9-]*' | sort -u)
echo "$wp_option_check"
输出超过一行就必须排查来源:Site Kit、MonsterInsights、主题自带的 SEO 选项都可能注入。推荐只保留一处(通常选 GTM 或 Site Kit 之一)。
步骤 3:自定义事件追踪(不依赖插件的推荐做法)
与其依赖插件的自动猜测,不如明确定义。把下面这段加到主题 JS 里,所有下载行为统一走 file_download 事件,参数规范可控:
(function () {
var FILE_RE = /\.(zip|rar|7z|pdf|docx?|xlsx?|pptx?|csv|apk)$/i;
document.addEventListener('click', function (e) {
var a = e.target.closest('a[href]');
if (!a) { return; }
var href = a.getAttribute('href') || '';
var url = new URL(href, location.origin);
// 下载
if (FILE_RE.test(url.pathname)) {
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'file_download',
file_extension: url.pathname.split('.').pop().toLowerCase(),
file_name: url.pathname.split('/').pop(),
link_url: href
});
return;
}
// 外链
if (url.hostname && url.hostname !== location.hostname) {
window.dataLayer.push({
event: 'outbound_click',
link_domain: url.hostname,
link_url: href
});
}
}, false);
}());
这套写法的前提是页面已加载 GA/GTM;建议统一走 GTM,让事件的 destination 由容器决定,而不是写死某个统计工具。
步骤 4:MonsterInsights 后台清理(给编辑看的后台不该有推广)
免费版会在 wp-admin 显示推荐通知。可以批量关闭:
// 屏蔽 MonsterInsights 后台通知(必须在 admin_init 早期执行)
add_action( 'admin_init', function() {
remove_action( 'admin_notices', array( MonsterInsights(), 'notices' ), 10 );
}, 1 );
add_filter( 'monsterinsights_menu_in_sidebar', '__return_false' );
add_filter( 'monsterinsights_show_admin_notices', '__return_false' );
步骤 5:只给管理员看统计菜单
add_action( 'admin_menu', function() {
if ( ! current_user_can( 'manage_options' ) ) {
remove_menu_page( 'monsterinsights_reports' );
}
}, 99 );
步骤 6:验证事件是否正确上报
GA4 后台 →「管理 → 数据流 → 增强型衡量功能」,确认所需项打开;然后到自己身上测试:
# 用 DebugView 验证最可靠;这里先确认前端 JS 是否加载成功
curl -s https://example.com/ | grep -c 'monsterinsights-frontend-script'
curl -s https://example.com/ | grep -c 'googletagmanager.com/gtag/js'
常见踩坑
- 数据突然翻倍:多插件同时注入。必须确定单一注入源——推荐 GTM 作为唯一入口。
- 案例:某教程站用 MonsterInsights 收集「PDF 下载」做线索统计,运营据此向广告主报 ROI。后来换成 GTM 方案重做,发现前一版把站内锚点链接(
#download)也计入了下载,且个别浏览器劣化时会一次点击触发两次 mousedown 上报,实际下载数虚高约 34%。教训:自动统计方便,但拿来做结算口径前必须用服务器日志(access log)交叉验证一次。 - 后台慢/TS 变长:MonsterInsights 会在后台定期请求自己的 API(速率取决于包的 Limited),弱网环境下 admin-ajax 堵塞。用 GTM4WP 或 GA Google Analytics 可以显著改善。
- GA4 里没有
event_category维度:UA 时代的自定义维度需重新注册为”自定义 dimension”,否则 GA4 探索报表里看不到历史字段。 - 本地/HIDS 环境上报被广告拦截器过滤:企业内网常见。用 GA4 DebugView(?或 Chrome 拓展 Tag Assistant)验证,不要只看 GA4 实时。
- 没启用增强型衡量功能导致”页面浏览”重复:如果插件和 GA4 内置的增强型衡量同时开启 enhanced measurement 的出站点击,会双计。二者选其一。
- WP-CLI 迁移后配置丢失:切换域名/迁移数据库时 MonsterInsights 的 OAuth token 存在
wp_options,直接 dump 迁移会导致invalid_grant。迁移后重新授权一次最省事。 - 对已登录用户也埋点:很多站点不排除 admin,导致自身操作污染数据。用条件排除:
php
add_filter( 'monsterinsights_track_user', function( $should_track ) {
return ! current_user_can( 'manage_options' );
} );
总结
选型标准可以按这三条走:①只想把 gtag 放进 head、不需要后台报表 → GA Google Analytics(免费、几乎无副作用);②需要丰富的自动事件(表单、affiliate、scroll depth)且能接受后台推广 → MonsterInsights 免费版;③站点已用 GTM 或需要 GDPR 合规控制 → 两者都不要,用 GTM4WP 统一管理 + 同意钩子。无论哪种,落地后必须验证”只有一个注入源”(用上面的命令检查 gtag snippet 数量),并过滤掉管理员流量,否则你看到的数据永远是不可信的。
数据准确性治理:Google Analytics 数据偏差排查
