wordpress网站开发:posts表的类型、定义与关系

2018-09-1509:39:40网站建设与开发Comments2,852 views字数 2023阅读模式

术语“posts”很容易被混淆,因为它既指一种文章类型(post type),又指存储在特定数据表中的内容类型(content type)。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4677.html

在这里,我要澄清两者之间的差异,并详细说说post类型(post types)。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4677.html

在本系列前面的部分,我讲解了WordPress中的不同的内容类型,它们被存储在几个不同的数据表中:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4677.html

  • 文章
  • 用户
  • 评论
  • 链接

在本教程中,我会查看更多post的细节和概述其他的post类型,他们之间的关系,怎么理解这些来帮助你使用它们。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4677.html

定义posts

首先,我从定义post和它与文章(Posts)怎么区分开始。(确实这很令人迷惑,而且加一个大写首字母并没有让事情更清楚):文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4677.html

  • 一个`post`是一个存储在`wp_table`中的内容项,每一项都有一个`post_type`赋值给它,可能是`post`,`page`或者其他。
  • 文章(Post)是一种post类型,用作博客文章或者其他项目,这取决于你的站点的类型。

`wp_table`如下图所示:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4677.html

wordpress网站开发:posts表的类型、定义与关系文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4677.html

理解吗?如果没有,继续读下去,就会更清楚!文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4677.html

WordPress中的post类型

WordPress有5种内置的 post 类型 :文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4677.html

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

另外你可以通过register_post_type() 函数添加 自定义post类型 ,这意味这你的WordPress可以有任意的你想要的post类型。每一种自定义post类型都有与内置类型相同的状态-经常我会听到有人说自定义post类型是一种文章类型,其实不是的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4677.html

我来举例说明一下。当写一个自定义查询文章的时候,你会向查询参数添加下面的代码:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4677.html

1
'post_type' => 'post'

但是如果你创建了自定义了名为`my_post_type`的post类型,你需要添加下面的代码到你的查询参数:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4677.html

1
'post_type' => 'my_post_type'

你可以使用这个`post_type`参数查询任何post类型。甚至如果你想要的话你可以查询多种post类型。我不会涉及更多细节因为这已经超出了本教程的范畴,但是你可以在WordPress Codex页面学习更多关于 WP_Query 的内容。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4677.html

理解缺省的post类型

我们来快速学习下每一种内置的post类型,它们如何相似和不同。注意在下面的表中,我使用一般意义上的术语post来描述所有post类型的内容。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4677.html

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类型都有自己的接口。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4677.html

posts之间的关系

如你从上表中看到的,`post_parent`是很重要的一个字段,它存储着不同posts类型的关系信息。包括:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4677.html

  • 父页面和子页面
  • 修订和与此相关的post
  • 附件和被上传到的post

你可以在你的查询中用不同的方法使用`post_parent`字段。比如查询一个给定页面的父页面,你可以使用下面的方法,这里的`ID`是父页面的ID:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4677.html

1
'post_parent' => 'ID'

你也可以使用一个相似的查询来显示所有上传到给定post的附件,或者作为代替,你可以查询那些没有父元素的附件(即是通过仪表盘的媒体界面直接上传的附件)。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4677.html

为实现这个,你可以使用下面的代码:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4677.html

1
'post_parent' => '0'

有很大的可能性是你永远你都不会查询修订,因为你只想要用户查看发布的内容。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4677.html

你还可以使用一个值为ID数组的`post_parent_in`得到一系列文章和页面的子元素。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4677.html

总结

理解`wp_post`表和它存储的内容对于理解WordPress数据库是很重要的一部分。如你看到的,`wp_post`用来存储posts,它包含5种内置的post类型(包括文章Post)和任意数量的你自己添加的自定义post类型。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4677.html

这个表还在`post_parent`字段存储post之间关系的数据。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4677.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/cms/4677.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定