通常,我们想到 WordPress 里面的内容时,都会想到文章和页面,其实文章和页面只是 WordPress 默认的两个文章类型。在很多实际应用中,只有这两个内容类型是远远不够的。理解了内容类型以及内容类型之间是怎么相互作用的,可以帮助我们更加深入的了解 WordPress,以便我们在开发主题和插件时写出更高级的内容查询。
WordPress 中主要的几种内容类型
在 WordPress 中,主要有4种内容类型,他们分别是:
- 文章
- 评论
- 用户
- 链接
其中,链接是已经被弃用的内容类型,所以,我们只需要了解前三种内容类型就可以了。
文章
文章是 WordPress 数据库中最重要的内容类型,这个可能会令人迷惑,因为 wp_posts
数据表用来描述很多内容(文章,页面,自定义文章类型等),而在默认的文章类型中也有一个文章类型叫“文章”。添加以下参数的查询中,看起来是多余的,但确实也是正确的。
'post_type' => 'post'
WordPress 默认有以下几个文章类型:
- 文章
- 页面
- 附件
- 版本
- 导航菜单项目
就像我在本系列文章, WordPress数据库关系中提到的,文章可以和自己建立连接,而在后台界面上是否支持这种链接,需要在新建文章类型的时候支持一下,默认支持这种连接关系的是页面,只需要在新建页面的时候指定父级页面就可以了。
WordPress开发者可能对前三种文章类型比较熟悉,对后两种比较陌生,每个文章版本都保存在 wp_posts
数据表中,版本的父级文章就是这篇文章本身。导航菜单项目以文章的方式保存,显示的时候有自己转悠的函数。
我们可以根据需要增加文章类型,新增的文章类型在表现上和默认的文章,页面类似,到底是类似于文章,还是类似于页面,取决于我们创建文章类型时的参数。
下面的图表显示了wp_posts
数据表以及其与其他数据的关联。
评论
评论存储在他自己的数据表 wp_comments
中,这和文章数据表有点像,评论数据可以通过 wp_commentmeta
数据表附加额外的数据,但他们是不同的内容类型,需要不同的字段。
评论将会通过一对多关系和文章连接,同时他们也通过 comment_parent
字段和自己相连接,这是为了区分某个评论是顶级评论还是回复其他评论的。如果用户已经登录,评论数据也会和 wp_users
数据表建立连接,以分辨是谁发表了评论。
下面的图表显示了 wp_comments
表和他的关系。
用户
用户有自己的数据表, wp_users
和 wp_usermeta
元数据表,一眼看上去,用户和不同于文章的一个内容类型,但是仔细考虑一下,其实用户和文章是差不多的,和文章一样,用户也可以被查询,并输出一个用户存档, 他们包含着用户资料数据。 用户文章类型和文章或评论的数据结构有着比较大的区别,所以用一个单独的用户数据表来存储用户的数据会比较合理一些。
下面的图表显示了用户数据表,以及用户数据表和其他数据的关系。
内容类型的 Metadata
除了已经被弃用的链接,以上4种内容类型中,有三种文章类型都有自己的 Metadata。
- 文章:post_meta
- 评论:comment_meta
- 用户:user_meta
关于内容类型的 Metadata,我会抽时间写一篇文章,详细介绍各种 Metadata 的作用和使用方法。
总结
综上,WordPress 使用不同类型的内容类型以及这些类型之间的关系来储数据,这些内容类型不单是文章和页面,还包括了自定义文章类型,媒体,版本和菜单项目。
理解了各个文章类型,弄清楚了他们是怎么工作的,并且能够理解他们之间的相似之处和不同点,可以帮助我们开发更强大的主题和插件。