这是我参与更文挑战的第15天,活动详情查看: 更文挑战
本篇翻译参考自Understanding and Working with Posts in WordPress
它是理解和使用WordPress中的数据系列的第五篇
理解和使用WordPress中的Posts
像很多 WordPress 术语一样,术语posts
很容易令人困惑,因为它既指一种post类型(文章类型——post type
),又指存储在特定数据表中的内容类型(content type
)。
在这,我将厘清这两者的不同,并详细查看post类型。
该系列的之前部分,我解释了WordPress中不同”内容类型”(content types
),它们存储在不同的数据库表中:
- posts
- users
- comments
- links
在本教程中,我将更详细地查验文章,并概述post类型,它们之间的关系以及如何理解所有这些内容,用以帮助您使用它们。
定义Posts
首先,我将从定义posts以及它们与Posts的区别开始(是的,这很令人困惑,添加大写字母并不能使事情变得更加清晰!):
- 一个
post
是一个存储在wp_posts
表中内容项。每个post
有一个指定的post_type
,post_type
可以文章post
、页面page
或其他。 - 文章(Post)是一种post类型,用于博客文章或新的项目,这取决于你开发的站点类型。
wp_posts
表显示如下图:
理解吗?如果没有,请继续读下去,就会更清晰!
WordPress中的post类型
Post Types
WordPress内置了五种post类型:
- 文章 —— Post
- 页面 —— Page
- 附件 —— Attachment
- 修订版本 —— Revision
- 导航菜单项 —— Navigation Menu Item
除此之外,你还可以使用register_post_type()函数添加你自己的自定义post类型。这意味着WordPress安装可以具有任意数量的post类型。每种post类型与内置post类型具有相同的状态——偶尔我听说有人认为”custom post type”本身就是一种post类型,实际不是!
我通过一个例子解释这些。当为posts写一个自定义查询时,你可以添加如下到你的查询参数中:
'post_type' => 'post'
复制代码
但是,如果你创建了一个叫my_post_type
的自定义post类型,你可以按照如下查询它:
'post_type' => 'my_post_type'
复制代码
你可以使用此post_type
参数查询任何post类型,并且可以查询多个post类型。我不会对此进行详细介绍,因为它不在本教程的讨论范围之内,但是您可以在WordPress Codex页面上阅读有关WP_Query的更多信息。
理解默认的post类型
让我们快速看一下每种内置的post类型,它们彼此之间的相似之处以及区别。请注意,在下表中,我使用术语”post”来笼统的描述所有post类型的内容。
Post Type | 用途 | 说明 |
---|---|---|
Post | 博客文章或其他相似的 | 核心的post类型-在主要的博客页面列出 |
Page | 静态页面 | 设计为单独显示-一般不用于归档(尽管可以这么用) 页面可以具有父页面,这些父页面由子页面记录中的 post_parent 字段定义。 每个页面可以有多个子级,但只有一个父级。 |
Attachment | 文档和图片(可能附加或不附加到post中) | 上传到post的媒体文件将会在它的post_parent 字段拥有那个post的ID;在管理后台仪表盘的媒体界面中上传的图片,该字段为空。guid 字段用来存储媒体文件的url |
Revision | 每一个post的单个修订版本 | 每个修订版本都会附加到post:post的ID 会存储在修订版本的post_parent 字段。 |
Navigation Menu Items | 单独的导航菜单项 | 每一个菜单都包含许多的导航项(navigation items ),每个导航项存储为一个post。menu_order 字段用来存储导航菜单项的顺序,其他的数据比如目标(target )和父菜单项(parent menu item )存储为wp_postmeta 表的记录。 |
可以注册自定义post类型,其行为与任何内置的post类型(附件除外)相同,默认为post
,每种post类型都有其自己的界面。
Posts之间的关系
正如从上表看到的那样,post_parent
是很重要的一个字段,因为它存储不同posts之间关系的信息。包括:
- 父和子页面
- 修订版本和其关联的post
- 附件和它们上传到的post
在查询中有多种方式可以使用post_parent
字段。例如,要查询给定页面的子页面,可以使用以下代码,其中ID
是父页面的ID:
'post_parent' => 'ID'
复制代码
可以使用类似的查询来显示上传到指定post的附件,或者可以查询没有父项的附件(即直接在仪表板的媒体屏幕上传到附件)。
为了实现这一点,你可以使用下面的参数:
'post_parent' => '0'
复制代码
查询修订版本是很不可能的,因为通常只希望访问者看到发布的内容。
还可以使用post_parent_in
指定ID数组,用以标识一系列posts或页面的子项。
概要
了解wp_posts
表及其存储的内容是了解WordPress数据库的重要部分。如您所见,wp_posts
表用于存储post,其中包括五种内置的post类型(包括文章)以及添加的任意数量的自定义post类型。
该表还在post_parent
字段中存储有关post之间关系的数据。