过去 10 年来,MySQL 数据库以令人难以置信的速度在网络上流行起来。每一个 WordPress 博客都由 MySQL 数据库驱动,存储博客日志、设置、评论等内容。
面对 WordPress,虽然插件或编码技巧可以解决一些问题、完成某些任务,但是有时除了通过 phpMyAdmin 或 SSH 执行 SQL 语句外,你别无选择。下面让我们来看看 WordPress 实用 SQL 语句集锦。本系列文章的每个篇章都严格按照提出问题、解决问题、解释说明的思路撰写,以使读者真正了解掌握解决问题的方法,达到举一反三的效果。
1 、创建数据库备份
问题。尽管本文论及的所有语句已经过测试,我们仍然应当先备份 MySQL 数据库,再尝试执行这些语句。
方案。要手工创建一个 WordPress 数据库备份,请按照下列步骤进行:
1 、登录 phpMyAdmin,选择 WordPress 数据库。
2 、接着在横向列示的菜单上点击 「导出」 按钮。
3 、选择压缩方法 (我个人习惯使用 gzip),然后点击 「执行」 按钮。
4 、浏览器会提示是否需要下载备份文件。选择 「是」,然后将该文件储存在硬盘驱动器上。
解释。需要注意的是,创建 WordPress 数据库备份的任务,可以通过 WP-DB-Backup 插件更容易地实现。每一个 WordPress 用户都应该安装此插件,并定期进行数据备份。 (译注:此提示虽显絮叨却是博客作者都应遵循的准则。因为主题或插件没了都可以再安装,但数据没了那么所有过往的努力都将付诸东流。)
2 、批量删除日志修订记录
问题。修订版本是 WordPress 2.6 引入的功能,该功能虽然在某些场景下比较有用,但也增加了 MySQL 数据库的大小。尽管我们可以手动删除文章修订版本,但这是非常漫长而枯燥的工作。
方案。这个问题的解决方法很简单:我们通过执行简单的 SQL 查询来批量删除日志修订记录。如果你有很多的日志,其结果可能令人难以置信:数据库的大小将减少一半!
登录 phpMyAdmin,选择 WordPress 数据库。
点击 「SQL」 按钮。将以下代码粘贴到 SQL 命令窗口:
DELETE FROM wp_posts WHERE post_type = "revision"; |
大功告成。最终节省的数据库空间大小取决于博客文章数的多少。
解释。 wp_posts 表有一个名为 post_type 的字段。此字段有几个取值,如 「post」 、 「page」 或 「revision」 。想要去除文章修订版本,只需运行一个命令以删除 wp_posts 表中,post_type 字段等于 「revision」 的记录。
接下来我们分析关于批量删除待审核评论和变更日志归属的 SQL 命令。
3 、瞬间删除 5000 条垃圾评论
问题。真人真事:我的一个朋友最近搭建了自己的博客,并开始在网上四处推广。经过几个星期的紧张工作,他休了几天假没有上网。
回到家里他看了看博客,结果看到... 超过 5000 条待审核评论!当然,其中大多数是垃圾评论,本来他打算逐一检验,以确保不会删掉一般读者的有效评论。
方案。令人高兴的是,友人把他的垃圾留言问题告诉了我。在我向他展示下面这条有用的 SQL 语句前,他已经花了 45 分钟手工删除垃圾评论。
登录 phpMyAdmin,选择 WordPress 数据库。
点击 「SQL」 按钮。将以下代码粘贴到 SQL 命令窗口:
DELETE from wp_comments WHERE comment_approved = '0'; |
向垃圾评论说再见!享受未受垃圾评论侵扰的数据库吧!
解释。 wp_comments 表包含一个名为 comment_approved 的字段,取布尔值 (1 或 0) 。通过审核的评论该值为 1,待审核的评论取 0 值。通过运行上面的命令,我们删除了全部待审核评论。
谨慎行事。如果你有一大堆垃圾留言需要删除,这种解决方案是非常有用的,但也可能删掉未经审核的有效评论。因此,如果你还没用上 Akismet,马上安装它以阻止垃圾评论的骚扰。