本文约 2,633 字,预计阅读 7 分钟。文中命令与配置均经过实测,可直接参考执行。
引言
刚发布没几天的文章,评论区就被塞满了「感谢分享,欢迎访问我的网站」加上一串博彩、贷款外链;后台「待审核」数字一路飙到几百上千,一条条删到手软;更糟的是,有些垃圾评论还被误放到了前台,白白给别人的广告站做了外链,拖累自己的站点质量和收录。垃圾评论几乎是每个开放评论的 WordPress 站点都会遇到的顽疾,它由脚本批量提交,靠人工一条条删根本删不过来,而且新的一批还在源源不断地进来。正确的思路不是「勤快地删」,而是「从源头拦住」。本文教你用真实存在的反垃圾插件搭一套组合防线,再配上审核规则,让垃圾评论基本进不来。
故障原因分析
- 评论完全开放,来者不拒。只要不设门槛,脚本就能直接 POST 提交评论,填个假邮箱也能过。
- 缺少人机验证。没有验证码或行为验证时,机器人可以无限次自动提交。
- pingback 与 trackback 被滥用。这两个功能常被换质成外链群发工具,往你的站灌入大量「引用」通知。
- 审核规则太宽松。默认允许匿名评论、链接数不设限、新评论直接可见,等于给垃圾评论开绿灯。
- 老文章评论长期开放。几年前的文章也被脚本翻出来刷,堆积成山,还消耗你的审核精力。
分步解决方案
方法一:先收紧「设置 → 讨论」的基础规则
后台「设置 → 讨论」是反垃圾的第一道门槛,逐项设置:
- 勾选「评论必须经人工批准」,新评论先审后发。
- 勾选「评论者必须填写姓名和电子邮箱」。
- 设置「当一条评论包含超过 2 个链接时,将其放入待审核队列」。
- 设置「当一条评论包含指定字词时,将其放入待审核队列」,把
viagra、casino、博彩、贷款、加微信等常见垃圾词填进去。 - 在「评论审核」列表里加一批黑名单关键词,命中直接进待审核。
方法二:安装 Akismet 自动识别
Akismet 是 WordPress 官方出品的反垃圾评论插件,也是新站装完就自带的那个。它把评论送到云端比对垃圾特征库,自动标记可疑评论。启用步骤:安装 Akismet Anti-Spam → 免费获取一个 API Key(可选择「按自己的用量付费」免费额度)→ 在设置页填入 Key 并保存。之后每条评论都会经它过滤,垃圾评论被自动丢进「垃圾」文件夹,你只需偶尔清理。它是性价比最高的一步。
方法三:用 Antispam Bee 做本地把关(适合不想依赖外部服务)
Antispam Bee 是完全免费、无需 API Key 的反垃圾插件,数据不离开你的服务器。安装后在「设置 → Antispam Bee」里勾选:对特定国家来源阻止(可按 IP 归属)、验证提交时间(太快的视为机器人)、阻止自助提交的 pingback 等。它还能与 Akismet 共存,两者搭配对不同类型的垃圾评论拦截效果更好。
方法四:关闭 pingback 与 trackback
这两个老功能如今基本只被垃圾群发利用,建议在「设置 → 讨论」里取消勾选「允许其它博客发送链接通知(pingback 和 trackback)到我新发布的文章」。若还想更彻底,可以在主题 functions.php 里关掉 XML-RPC 的 pingback 方法(见站内《关闭 XML-RPC》一文)。
方法五:给评论表单加一层人机验证
可以在评论表单加简单验证,例如用插件启用 Google reCAPTCHA。或用 .htaccess 限制评论提交频率,减少脚本批量灌入:
# 限制 wp-comments-post.php 的提交(示例限速思路,配合云 WAF 更佳)
<Files "wp-comments-post.php">
Order Deny,Allow
Deny from env=spambot
Allow from all
</Files>
更实用的做法是接入 Cloudflare 的「托管质询」或在宝塔 WAF 里对评论接口设速率限制。
方法六:批量清理已入库的垃圾评论
对已经堆下来的垃圾评论,别一条条手删。后台「评论」页把每页显示数调到 100+,全选「标为垃圾」,WordPress 会记住提交者并自动拦截后续。也可以直接写 SQL 清理:
-- 先备份,再把所有标记为垃圾的评论删除
SELECT COUNT(*) FROM wp_comments WHERE comment_approved = 'spam';
DELETE FROM wp_comments WHERE comment_approved = 'spam';
-- 删除前务必备份 wp_comments 与 wp_commentmeta
方法七:对老文章关闭评论
去「设置 → 讨论」勾选「自动关闭发布超过 X 天的文章上的评论」,把 X 设为 30 或 60。老文章本就没什么正常的评论需求,关掉能一劳永逸地减少长期骚扰面。
常见踩坑点
- 只删不拦。手动删除只是治标,不配插件和审核规则,垃圾评论会源源不断,永远删不完。
- Akismet Key 没填或填错。Key 过期或类型选错会导致插件不生效,装完一定在设置页确认状态为「已连接」。
- 误伤正常读者。关键词黑名单设得太宽(比如把「价格」也加入),会把真实咨询评论拦掉,要定期翻看垃圾箱捞回误判。
- 同时装多个反垃圾插件。Akismet、Antispam Bee 叠用需注意各自设置,装太多反而影响评论提交速度,选 1~2 个主力即可。
- 保留 trackback 又抱怨。pingback/trackback 是垃圾换链的重灾区,不关掉就等着被刷。
- 直接删评论表不备份。用 SQL 清理
wp_comments前一定要先导出备份,误删无法恢复。
总结
WordPress 垃圾评论的本质是「门槛太低 + 没有识别」,所以解决思路是「先设门槛、再上识别、最后批量清理」。基础层面收紧「设置 → 讨论」的审核规则、限制链接数和关键词;识别层面用 Akismet 做云端比对、用 Antispam Bee 做本地过滤;源头层面关闭 pingback/trackback、给评论加验证并自动关闭老文章评论。对已经堆积的垃圾评论,用批量标记或 SQL 一次性清掉。坚持这套组合,大部分站点的 WordPress 垃圾评论拦截能做到前台基本干净,让你的评论区重新变回真正交流的地方。
