能找回,前提是未永久删除;若仅软删除(post_status为trash),可在phpmyadmin中将post_status改回publish恢复,否则需依赖备份或binlog。
误删的文章还能不能找回来,取决于它是不是被“永久删除”了。如果只是点了个“移到回收站”,post_status 还是 trash,那改回 publish 就行;要是清空了回收站或点了“永久删除”,phpmyadmin 本身无法恢复——它不存历史记录,只能靠备份或 binlog。
怎么判断文章还在不在数据库里
别急着写 SQL,先确认数据是否真的没了。
- 进 phpMyAdmin → 选你的 WordPress 数据库 → 打开
wp_posts表 - 点「搜索」标签页,在
post_status字段填trash,执行搜索 - 如果能查到目标文章(可通过
post_title或post_date辅助筛选),说明只是软删除,直接编辑改状态即可 - 如果搜不到,且你没在删除前导出过 .sql 备份,也没开 MySQL 的 binlog,那这行记录已物理消失,phpMyAdmin 无能为力
把 trash 状态的文章手动改回 publish
这是最安全、最常用的操作,本质就是更新一行字段,不涉及导入导出。
- 在
wp_posts表中找到对应记录,点击「编辑」 - 把
post_status从trash改成publish - 务必检查
post_type是post(不是revision、page或attachment) -
wp_postmeta表里的自定义字段通常不用动,WordPress 会自动关联 - 改完保存后,前台可能不立刻显示,需清空对象缓存(如 Redis、OPcache)或插件缓存(如 WP Super Cache)
用 SQL 批量恢复多个 trash 文章
手动点太慢?SQL 更快,但风险也更高——写错 WHERE 条件可能误改其他类型内容。
- 执行前先备份整个
wp_posts表(导出为 .sql 文件) - 先用
SELECT * FROM wp_posts WHERE post_status = 'trash' AND post_type = 'post' LIMIT 10;预览,确认结果是你想恢复的 - 再执行更新语句:
UPDATE wp_posts SET post_status = 'publish' WHERE post_status = 'trash' AND post_type = 'post'; - 加时间范围更稳妥:比如只恢复 5 月 1 日到 5 月 10 日删的,加条件
AND post_date >= '2024-05-01' AND post_date - 漏掉
AND post_type = 'post'很危险——页面(page)、草稿(draft)、附件(attachment)都可能被一并改成publish
真正难的不是改状态,而是区分“还能救”和“真没了”。很多人卡在第一步:以为删了就彻底消失,其实只是进了 trash;也有人反复执行 UPDATE 却没效果,结果发现 post_type 是 page 或字段值被插件覆盖了。动手前多看一眼 post_type 和 post_status 的实际值,比背命令重要得多。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











