WordPress数据库系列:理解和使用WordPress中的数据系列五(Posts)

这是我参与更文挑战的第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_typepost_type可以文章post、页面page或其他。
  • 文章(Post)是一种post类型,用于博客文章或新的项目,这取决于你开发的站点类型。

wp_posts表显示如下图:

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

WordPress中的post类型

Post Types

WordPress内置了五种post类型

  1. 文章 —— Post
  2. 页面 —— Page
  3. 附件 —— Attachment
  4. 修订版本 —— Revision
  5. 导航菜单项 —— 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之间关系的数据。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享