WordPress数据库系列:理解和使用WordPress中的数据系列三(内容类型)

514 阅读5分钟

这是我参与更文挑战的第13天,活动详情查看: 更文挑战

本篇翻译参考自Understanding and Working with Content Types in WordPress 它是理解和使用WordPress中的数据系列的第三篇

理解和使用WordPress中的内容类型

本系列的前两部分,介绍了WordPress数据库及其结构并展示了不同内容类型之前的关系。

此处将更详细的查看内容类型,描述WordPress中不同的内容类型和如何与之交互。

当我们考虑WordPress中的内容,通常会想到文章和页面,但事情不是这么简单。WordPress使用许多内容类型,文章和页面仅仅是这些当中的两个例子

理解内容类型、它们如何存储和相互间如何交互将帮助你对WordPress有更深层次的理解,以及在主题和插件中编写高级查询。

让我们一起看一下吧!——Let's take a look!

WordPress中主要的内容类型

WordPress中有4中内容:

  1. posts
  2. comments
  3. users
  4. links

正如我们将看到的,其中许多行为都非常相似。

Posts

Posts是WordPress中最重要的内容类型。

围绕它的术语可能会令人困惑,因为post用于描述wp_posts表中任何内容,但是它也用于描述一个特定post类型——"文章"。添加下面的查询可能似乎是多余的,但是却是有意义的:

'post_type' => 'post'

为了区分,在特定类型"文章"的情况才将post翻译为文章,其他情况均默认保持原词不变。

WordPress中有五种默认的post类型:

  1. 文章 —— post
  2. 页面 —— page
  3. 附件 —— attachment
  4. 修订版本 —— revision
  5. 导航菜单项 —— navigation menu item (即某个位置的导航菜单中每一项,某个位置的导航菜单则对应于term)

正如该系列之前教程中[数据之间的关系介绍]中所解释的,post相互之间可以关联。这通常用来定义一个附件附加到哪个post或页面,哪个是另一个页面的父页面。

前三种post类型对于WordPress开发人员来说很熟悉,但后两种post不太明显。

每个修订版(revision)都将与其相关的post作为父文档保存在wp_posts表中(使用post_parent字段),导航菜单项保存为post,然后在显示菜单时通过查询输出。这就是为什么如果错误地使用了pre_get_posts()过滤器,导航菜单会突然消失的原因!

通过创建自定义post类型,你可以根据需要添加多种额外的post类型。额外的post类型的行为可以和文章、页面或附件相同,取决于在注册post类型时如何设置它们。

下图展示了wp_posts表及该表的关系:

评论

评论存储在它自己的数据库表wp_comments中。它们的工作方式和post相似,每个评论可以通过wp_commentmeta表拥有附加的元数据,但是内容和post的不同,因此表所需要的字段也不相同。

评论链接到post是通过一对多的关系,并且通过comment_parent字段,它们自身也相互链接,comment_parent用于标识当前评论回复的是哪个评论。如果评论被一个已登陆用户添加,则会选择性的链接到wp_users表。

下图显示了wp_comments表及其关系:

用户

用户有自己的表wp_users,同时元数据存储在wp_usermeta表中。

乍一看,用户的内容类型似乎与posts完全不同,但是它们比你认为的要相似得多——可以查询它们并将其输出到author归档中,并且具有用户履历数据形式的内容。

用户内容的结构与posts、链接和评论完全不同,这就是users需要自己的表的原因。

下图展示了wp_users表及其关系

在该系列的后面的部分,你将学到更多的用户数据及如何关联其他表。

链接

最后的内容类型是link。这些已经被WordPress逐步淘汰,从3.5版本开始,blogroll默认不再可用。

链接的工作方式和posts类似,它们有内容、可以分配分类法项。然而又与posts不同,因为字段不同,链接的字段存储关于链接目标(link target)、描述(description)等相关的数据。它们不会链接到用户,因此不能分配作者;它们也没有字段标识父级,因此不能附加到一个post;但是你可以使用分类法在归档页中包含它们。

wp_links表及与其他表的关系如下图:

关于元数据

上面介绍的四个内容类型,三个可以拥有元数据:

  1. posts
  2. comments
  3. users

在本系列的后面部分,将更详细地介绍元数据,并展示其存储方式。

概要

正如已经探索的那样,WordPress使用多种内容类型来存储数据及其之间的关系。数据库中存储的内容类型不仅限于文章和页面,还包括自定义post类型以及其他内容类型,例如附件,修订版本和导航菜单项。

了解这些是什么以及它们如何工作,以及其之间的异同,将帮助你开发更强大的WordPress主题和插件。