理解和利用 WordPress 中的posts表

像很多 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`如下图所示:

working-with-data-in-wordpress-wp-posts-table

理解吗?如果没有,继续读下去,就会更清楚!

WordPress中的post类型

WordPress有5种内置的 post 类型 :

  • 文章(Post)
  • 页面(Page)
  • 附件(Attachment)
  • 修订版本(Revision)
  • 导航菜单项(Navigation Menu Item)

另外你可以通过register_post_type() 函数添加 自定义post类型 ,这意味这你的WordPress可以有任意的你想要的post类型。每一种自定义post类型都有与内置类型相同的状态-经常我会听到有人说自定义post类型是一种文章类型,其实不是的。

我来举例说明一下。当写一个自定义查询文章的时候,你会向查询参数添加下面的代码:

'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类型 用途 说明
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:

'post_parent' => 'ID'

你也可以使用一个相似的查询来显示所有上传到给定post的附件,或者作为代替,你可以查询那些没有父元素的附件(即是通过仪表盘的媒体界面直接上传的附件)。

为实现这个,你可以使用下面的代码:

'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大学 原创翻译,未经允许,禁止转载和采用本译文。

来源:

https://www.wpdaxue.com/understanding-and-working-with-posts-in-wordpress.html

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?