和其他 WordPress 术语一样,WordPress 文章理解起来可能有点困难,文章在 WordPress 中既是一个内容类型,也是指存储在数据表中的文章内容。Drupal 在方面处理的就非常好,内容类型就是内容类型,文章就是文章。(WordPress 出现这种情况是由于历史原因,WordPress 早期是一个博客应用,没有考虑到其他类型的内容,然后 WordPress 使用得越来越多,就不好修改了)。
好在 WordPress 中术语并不是很多,只要稍微思考一下就理解了。在 WordPress数据库中,有以下几种类型的数据。
- Posts 文章
- Users 用户
- Comments 评论
- Links 链接
在本文中,我将为大家深入解释一下文章,简单介绍一下文章类型,以及文章和其他数据之间的关系。
文章的定义
首先,来迷糊一下,在 WordPress 中,文章是一种文章类型。
- 一篇
post
是存储在wp_posts
数据表中的一条内容,每条内容都有一个post_type
字段,这个字段的值可能是post
,page
或其他自定义数据。 - 文章是一个文章类型,用来发布文章或新闻,具体要看你开发的是什么网站了。
wp_posts
的数据表结构如下:
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
字段存储和体现。