5ucms论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 10880|回复: 0
打印 上一主题 下一主题

[数据库] 深入理解 WordPress 文章数据表 wp_posts

[复制链接]

670

主题

785

帖子

8248

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
8248
跳转到指定楼层
楼主
发表于 2021-5-29 22:38:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
和其他 WordPress 术语一样,WordPress 文章理解起来可能有点困难,文章在 WordPress 中既是一个内容类型,也是指存储在数据表中的文章内容。

好在 WordPress 中术语并不是很多,只要稍微思考一下就理解了。在 WordPress数据库中,有以下几种类型的数据。

Posts 文章
Users 用户
Comments 评论
Links 链接


在本文中,我将为大家深入解释一下文章,简单介绍一下文章类型,以及文章和其他数据之间的关系。

文章的定义
首先,来迷糊一下,在 WordPress 中,文章是一种文章类型。

一篇 post 是存储在 wp_posts 数据表中的一条内容,每条内容都有一个 post_type 字段,这个字段的值可能是 post, page 或其他自定义数据。
文章是一个文章类型,用来发布文章或新闻,具体要看你开发的是什么网站了。

WordPress 中的文章类型
WordPress 默认有以下几个文章类型:

Post 文章
Page 页面
Attachment 附件
Revision 文章版本
Navigation Menu Item 导航菜单


除了这些默认文章类型,我们还可以通过register_post_type() 函数注册自定义文章类型,这就意味着,WordPress 可以有很多文章类型,只要你不嫌多,可以一直往上加。每个文章类型的数据字段和默认的文章类型一样,这里有一个术语需要注意一下:“自定义文章类型”不是一个内容类型,而是除了默认的文章类型以外所有自己添加的文章类型的统称。

举例说明一下,当我们构建自定义查询的时候,有一个'post_type'参数:
'post_type' => 'post'
这个参数查询的是默认的文章,如果需要查询其他类型的文章,修改一下参数值就可以了,在下面,我们修改为 books, 查询的就是 Book 文章类型的内容。

'post_type' => 'book'
我们可以是用这个参数查询任何一个文章类型的数据,也可以同时查询多个文章类型的数据,不过这不是本文的重点,在这里就不多说了,有兴趣的朋友可以移步WP_Query 文章页面深入了解。

理解默认的文章类型
下面我们来简单了解一下默认的文章类型,看看他们之间的共同点和区别。

文章类型        用途        备注
Post        博客文章        核心文章类型
Page        静态页面        用来显示一个内容比较固定的页面,文章可以有父级页面,每个父级页面可以有多个子页面。
Attachment        文章附件        上传到某篇文章的媒体将会附加到这篇文章,作为这篇文章的附件,该媒体的 post_parent 字段将被设置为这篇文章的 ID,在多媒体上传页面上传的媒体没有附加到文章, post_parent  为空,guid 字段用来存储媒体文章的 URL。
Revision        文章版本        每个版本都被附加到一篇文章,版本的post_parent字段为所附加到文章的文章 ID。
Navigation Menu Items        导航菜单        每个菜单都包含若干个导航菜单项目,每个项目被保存为一条文章记录,menu_order 字段用来记录菜单的顺序,其他附加数据,如打开方式、父级菜单保存在 wp_postmeta 数据表中。

自定义文章类型可以注册为和内置文章类型一样的形式(除了附件),每个文章类型都可以有自己的界面。

文章之间的关系
如上表所见, post_parent 是一个非常重要的字段,该字段存储着不同文章之间的父子关系,包括:

父级页面和子页面
每个文章的修订版本
附件和附件所附加到的文章

在自定查询中,我们有很多地方需要用到 post_parent 字段,例如:查询指定页面的子页面,下面的例子中 ID 是一个数字,字父级页面的 ID。
'post_parent' => 'ID'

同样,我们也可以使用类似的方式显示附加到一篇文章的所有附件,或者查询没有附加到任何文章的附件(在多媒体管理界面上传的媒体通常没有附加到文章),查询这一类数据,只需要把 post_parent 的值设置为0就可以了:
'post_parent' => 0
对修订版本的查询我们不太可能用到,在这里就不多说了。

另外,我们可以使用 post_parent_in ,该参数的值为一个数组,用来查询一组文章或页面的子页面。

总结

理解 wp_posts 数据表和存储方式是理解 WordPress 数据库必不可少的一步, wp_posts 数据表主要用来存储文章,包括内置文章类型和自定义文章类型。该数据表内记录之间的层级关系通过post_parent字段存储和体现。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|5ucms.com

GMT+8, 2024-5-5 01:53 , Processed in 0.859375 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表