很多人都有过这种经历吧,建了个小博客或者小站,好不容易攒点人气,结果打开留言管理一看,一半都是广告垃圾,有时候攒个几千条上万条,一条一条勾选删除都得手抖半天,眼睛还累。
别硬扛了,咱们直接用宝塔自带的功能配合点小操作,分分钟搞定。
先说说最简单的场景,用宝塔部署的 WordPress 小站,批量清理留言的方法。
先登录你的宝塔面板,找到对应的网站目录,一般是 /www/wwwroot/你的域名/ ,进去找到 wp-config.php 这个文件,先右键备份一份,这是为了防止手滑出问题,备份永远是第一准则,懂的都懂。
备份好之后,回到宝塔的数据库管理页面,找到对应 WordPress 的数据库,点击进入 phpMyAdmin。
进去之后,在左侧栏找到 wp_comments 这个表,别搞错了,wp_ 是前缀,有些人装的时候可能改了,比如 my_ 、site_ 之类的,就找带 comments 的那个表就行。
点击这个表,然后在顶部菜单栏找到 SQL 按钮,输入对应的 SQL 代码就行。
如果是想清理所有的垃圾留言,包括待审核的、已标记垃圾的、回收站里的,直接用这个代码:
```sql
DELETE FROM wp_comments WHERE comment_approved != '1';
```
注意把 wp_ 换成你自己的数据库前缀哦。
如果是只清理回收站里的留言,代码是这个:
```sql
DELETE FROM wp_comments WHERE comment_approved = 'trash';
```
如果是想只清理待审核的,代码改成:
```sql
DELETE FROM wp_comments WHERE comment_approved = '0';
```
输入完代码,点击右下角的执行,就会显示删除了多少条记录,速度快到你不敢信,几千条也就是几秒钟的事。
那要是用的不是 WordPress,是其他程序呢?比如 Discuz、ZBlog 这些?
其实原理都一样,先找到对应的数据库表,然后执行 SQL 删除就行。
比如 ZBlog,对应的表前缀如果是 zbp_ 的话,评论表是 zbp_comment,清理待审核(一般是状态为 0)或者已删除(状态为 -2)的留言,代码可以自己调整下字段。
Discuz 的话,稍微复杂点,要清理两个表,一个是主评论表 pre_forum_post,还有一个是主题回复表的缓存关联?不对,直接用 SQL 删主表就行,记得替换前缀。
操作前一定要备份数据库!这事儿真的太重要了,别嫌麻烦,万一删错了,哭都没地方哭。
还有一种更高级的方法,就是写个 shell 脚本,定时自动清理,比如每天凌晨 3 点清理一次垃圾留言,这个适合留言量特别大的站长。
这个脚本可以自己写,也可以去网上找现成的修改一下,然后放到宝塔的计划任务里设置定时执行就行。
比如 WordPress 的定时清理脚本,可以这样写:
```bash
!/bin/bash
定义数据库信息
DB_USER="你的数据库用户名"
DB_PASS="你的数据库密码"
DB_NAME="你的数据库名"
DB_PREFIX="你的数据库前缀"
执行删除垃圾留言的SQL
mysql -u$DB_USER -p$DB_PASS $DB_NAME <