WordPress 数据库探究 #2 — wp_posts

WordPress 主要被用作一个博客引擎的内容管理系统(简称 CMS)。所以我认为这个“内容”表是最重要的。静态页面,日志和附件都是内容,WordPress 把它们都放在一个表中 — wp_posts

实际上,附件是被保存在它们原来的位置 — 在磁盘的文件,但是 WordPress 用 wp_posts 表保存附件的元信息,如上传该附件用户的 ID,附件所属日志的 ID,上传的日期等等。

静态页面,日志和附件可以很相似,也可以很不同。现在,我们要看到在它们之间的共同之处。他们都有一个唯一的 ID(通常是 WordPress 或者 MySQL 自动产生的),一个作者(写日志或者上传文件的人),发布日期,题目和秒速(甚至空的,依然有方法日后增加和使用)。它们都有 URL。所以对于每个日志,静态页面和附件,WordPress 把它们存储为 wp_posts 表中的一条数据。

还是一些区分日志,静态页面和附件的方法,为了区分它们,WordPress 使用了 wp_posts 表中的字段 post_type。对于日志,post_type 的值是 ‘post’。对于静态页面 — ‘page’。对于附件 — ‘attachment’。

然后,有些字段简单日志是特殊类型的时候使用。举个例子,字段 post_mime_type 用来存储附件文件类型,如 ‘image/jpeg’ 和 ‘application/pdf’(在 Wikipedia 定义为 MIME )。 字段 menu_order 用来指定静态页面的顺序。字段 post_parent 用来组织静态页面和子页面之间的关系,同样也用作把附件链到日志。

为了得到每个字段是怎们和什么时候使用的更好的图像,看一下每种类型日志的一条真是记录:

  • SELECT * FROM wp_posts WHERE post_type = ‘post’ LIMIT 1
  • SELECT * FROM wp_posts WHERE post_type = ‘page’ LIMIT 1
  • SELECT * FROM wp_posts WHERE post_type = ‘attachment’ LIMIT 1

如果使用的是 MySQL 命令行工具,那么你最好在查询语句的后面中添加 “\G” (”SELECT * FROM wp_posts WHERE post_type=’post’ LIMIT 1 \G”)。这将向你显示更适合阅读的结果。

日志的状态页是保存在这个表中。在大多数情况下,你可以看到 ‘publish’ 为已发布的日志,‘draft’ 为草稿,‘inherit’ 为附件。还有一些选项,你可以从表格说明中学到。

下面是一些你可以只利用 wp_posts 表进行操作的想法:

  • 产生一些统计 — 总共有多日志,每种类别的日志分别有多少,每个作者发表的日志有多少,在一段日期内平均每天有多少篇日志等等。
  • 产生一个所有附件的列表。
  • 给每篇日志产生一个图片廊 (提示:“WHERE post_type = ‘attachment’ AND (post_mime_type = ‘image/jpeg’ OR post_mime_type = ‘image/gif’ OR post_mime_type = ‘image/png’)“)。

下一篇介绍:wp_postmeta

热门文章