深入理解 WordPress 文章数据表 wp_posts

和其他 WordPress 术语一样,WordPress 文章理解起来可能有点困难,文章在 WordPress 中既是一个内容类型,也是指存储在数据表中的文章内容。Drupal 在方面处理的就非常好,内容类型就是内容类型,文章就是文章。(WordPress 出现这种情况是由于历史原因,WordPress 早期是一个博客应用,没有考虑到其他类型的内容,然后 WordPress 使用得越来越多,就不好修改了)。

好在 WordPress 中术语并不是很多,只要稍微思考一下就理解了。在 WordPress数据库中,有以下几种类型的数据。

  • Posts 文章
  • Users 用户
  • Comments 评论
  • Links 链接

在本文中,我将为大家深入解释一下文章,简单介绍一下文章类型,以及文章和其他数据之间的关系。

文章的定义

首先,在 WordPress 中,文章是一种文章类型。

  • 一篇 post 是存储在 wp_posts 数据表中的一条内容,每条内容都有一个 post_type 字段,这个字段的值可能是 post, page 或其他自定义数据。
  • 文章是一个文章类型,用来发布文章或新闻,具体要看你开发的是什么网站了。

wp_posts的数据表结构如下:

working-with-data-in-wordpress-wp-posts-table-2
WordPress 文章数据表结构

 WordPress 中的文章类型

WordPress 默认有以下几个文章类型:

  • Post 文章
  • Page 页面
  • Attachment 附件
  • Revision 文章版本
  • Navigation Menu Item 导航菜单

除了这些默认文章类型,我们还可以通过register_post_type() 函数注册自定义文章类型,这就意味着,WordPress 可以有很多文章类型,只要你不嫌多,可以一直往上加。每个文章类型的数据字段和默认的文章类型一样,这里有一个术语需要注意一下:“自定义文章类型”不是一个内容类型,而是除了默认的文章类型以外所有自己添加的文章类型的统称。

举例说明一下,当我们构建自定义查询的时候,有一个'post_type'参数:

'post_type' => 'post'

这个参数查询的是默认的文章,如果需要查询其他类型的文章,修改一下参数值就可以了,在下面,我们修改为 books, 查询的就是 Book 文章类型的内容。

'post_type' => 'book'

我们可以是用这个参数查询任何一个文章类型的数据,也可以同时查询多个文章类型的数据,不过这不是本文的重点,在这里就不多说了,有兴趣的朋友可以移步WP_Query 文章页面深入了解。

理解默认的文章类型

下面我们来简单了解一下默认的文章类型,看看他们之间的共同点和区别。

文章类型用途备注
Post博客文章核心文章类型
Page静态页面用来显示一个内容比较固定的页面,文章可以有父级页面,每个父级页面可以有多个子页面。
Attachment文章附件上传到某篇文章的媒体将会附加到这篇文章,作为这篇文章的附件,该媒体的 post_parent 字段将被设置为这篇文章的 ID,在多媒体上传页面上传的媒体没有附加到文章, post_parent  为空,guid 字段用来存储媒体文章的 URL。
Revision文章版本每个版本都被附加到一篇文章,版本的post_parent字段为所附加到文章的文章 ID。
Navigation Menu Items导航菜单每个菜单都包含若干个导航菜单项目,每个项目被保存为一条文章记录,menu_order 字段用来记录菜单的顺序,其他附加数据,如打开方式、父级菜单保存在 wp_postmeta 数据表中。

自定义文章类型可以注册为和内置文章类型一样的形式(除了附件),每个文章类型都可以有自己的界面。

文章之间的关系

如上表所见, post_parent 是一个非常重要的字段,该字段存储着不同文章之间的父子关系,包括:

  • 父级页面和子页面
  • 每个文章的修订版本
  • 附件和附件所附加到的文章

在自定查询中,我们有很多地方需要用到?post_parent?字段,例如:查询指定页面的子页面,下面的例子中?ID?是一个数字,是父级页面的 ID。

'post_parent' => 'ID'

同样,我们也可以使用类似的方式显示附加到一篇文章的所有附件,或者查询没有附加到任何文章的附件(在多媒体管理界面上传的媒体通常没有附加到文章),查询这一类数据,只需要把 post_parent 的值设置为0就可以了:

'post_parent' =>?0

对修订版本的查询我们不太可能用到,在这里就不多说了。

另外,我们可以使用 post_parent_in ,该参数的值为一个数组,用来查询一组文章或页面的子页面。

总结

理解 wp_posts 数据表和存储方式是理解 WordPress 数据库必不可少的一步, wp_posts 数据表主要用来存储文章,包括内置文章类型和自定义文章类型。该数据表内记录之间的层级关系通过post_parent字段存储和体现。

深入理解 WordPress 文章数据表 wp_posts
滚动到顶部