本文目录
[隐藏]
- 1定义posts
- 2WordPress中的post类型
- 3理解缺省的post类型
- 4posts之间的关系
- 5总结
本文是《理解和利用 WordPress 中的数据》系列教程的第 5 部分,该系列共包含以下 9 个部分:
- 理解和利用 WordPress 中的数据(介绍)
- 理解和利用 WordPress 中的数据关系
- 理解和利用 WordPress 中的内容类型
- 理解和利用 WordPress 中的用户数据
- 理解和利用 WordPress 中的posts表
- 理解和利用 WordPress 中的元数据(Metadata)
- 理解和利用 WordPress 中的分类法(Taxonomies)和分类项(Terms)
- 理解和利用 WordPress 中的选项表
- 理解和利用 WordPress 中的数据 – 多站点
像很多 WordPress 术语一样,术语“posts”很容易被混淆,因为它既指一种文章类型(post type),又指存储在特定数据表中的内容类型(content type)。
在这里,我要澄清两者之间的差异,并详细说说post类型(post types)。
在本系列前面的部分,我讲解了WordPress中的不同的内容类型,它们被存储在几个不同的数据表中:
- 文章
- 用户
- 评论
- 链接
在本教程中,我会查看更多post的细节和概述其他的post类型,他们之间的关系,怎么理解这些来帮助你使用它们。
定义posts
首先,我从定义post和它与文章(Posts)怎么区分开始。(确实这很令人迷惑,而且加一个大写首字母并没有让事情更清楚):
- 一个`post`是一个存储在`wp_table`中的内容项,每一项都有一个`post_type`赋值给它,可能是`post`,`page`或者其他。
- 文章(Post)是一种post类型,用作博客文章或者其他项目,这取决于你的站点的类型。
`wp_table`如下图所示:
理解吗?如果没有,继续读下去,就会更清楚!
WordPress中的post类型
WordPress有5种内置的 post 类型 :
- 文章(Post)
- 页面(Page)
- 附件(Attachment)
- 修订版本(Revision)
- 导航菜单项(Navigation Menu Item)
另外你可以通过register_post_type()
函数添加 自定义post类型 ,这意味这你的WordPress可以有任意的你想要的post类型。每一种自定义post类型都有与内置类型相同的状态-经常我会听到有人说自定义post类型是一种文章类型,其实不是的。
我来举例说明一下。当写一个自定义查询文章的时候,你会向查询参数添加下面的代码:
1 |
'post_type' => 'post' |
但是如果你创建了自定义了名为`my_post_type`的post类型,你需要添加下面的代码到你的查询参数:
1 |
'post_type' => 'my_post_type' |
你可以使用这个`post_type`参数查询任何post类型。甚至如果你想要的话你可以查询多种post类型。我不会涉及更多细节因为这已经超出了本教程的范畴,但是你可以在WordPress Codex页面学习更多关于 WP_Query
的内容。
理解缺省的post类型
我们来快速学习下每一种内置的post类型,它们如何相似和不同。注意在下面的表中,我使用一般意义上的术语post来描述所有post类型的内容。
post类型 | 用途 | 说明 |
---|---|---|
Post | 博客文章或其他相似的 | 主要的post类型-在主博客页面列出 |
Page | 静态页面 | 用来单独显示-一般不用于存档(尽管可以这么用) |
Attachment | 文档和图片(可能附录或不附录到post中) | 上传到post的媒体文件将会在它的`post_parent`字段拥有那个post的ID。通过仪表盘的媒体界面上传的图片的该字段为空。`guid`字段用来存储媒体文件的url |
Revision | 每一个post的单个的修订 | 每一次的修订都会附录到post:post的`ID`会存储在修订的`post_parent`字段。 |
Navigation Menu Items | 单独的导航菜单项 | 每一个菜单都包含许多的导航项,每一个会被存储为一个post,`menu_order`字段用来存储关于导航菜单项的顺序,其他的数据比如目标(target)和父菜单项存储为`wp_postmeta`表的记录。 |
自定义的post类型可以注册为与内置post类型行为相同(除了`attachment`),但是默认值是`post`.每一种post类型都有自己的接口。
posts之间的关系
如你从上表中看到的,`post_parent`是很重要的一个字段,它存储着不同posts类型的关系信息。包括:
- 父页面和子页面
- 修订和与此相关的post
- 附件和被上传到的post
你可以在你的查询中用不同的方法使用`post_parent`字段。比如查询一个给定页面的父页面,你可以使用下面的方法,这里的`ID`是父页面的ID:
1 |
'post_parent' => 'ID' |
你也可以使用一个相似的查询来显示所有上传到给定post的附件,或者作为代替,你可以查询那些没有父元素的附件(即是通过仪表盘的媒体界面直接上传的附件)。
为实现这个,你可以使用下面的代码:
1 |
'post_parent' => '0' |
有很大的可能性是你永远你都不会查询修订,因为你只想要用户查看发布的内容。
你还可以使用一个值为ID数组的`post_parent_in`得到一系列文章和页面的子元素。
总结
理解`wp_post`表和它存储的内容对于理解WordPress数据库是很重要的一部分。如你看到的,`wp_post`用来存储posts,它包含5种内置的post类型(包括文章Post)和任意数量的你自己添加的自定义post类型。
这个表还在`post_parent`字段存储post之间关系的数据。
原文出自:http://code.tutsplus.com/tutorials/understanding-and-working-with-posts-in-wordpress–cms-21032
阅读该系列的其他文章: 上一篇:理解和利用 WordPress 中的用户数据 下一篇:理解和利用 WordPress 中的元数据(Metadata)