去评论
距米网-精简版

理解和利用 WordPress 中的数据

JUMU
2019/01/03 00:51:45
一个WordPress站点至少包含如下三个主要元素:
大多数WordPress用户从来没有直接查看过数据库,甚至都从来不知道它的存在。当WordPress提供任何页面时,可能是首页,一篇文章或者是归档,它都会去访问数据库并获取作者和管理员添加到站点的内容。
在这个系列的教程中我将会从不同角度对WordPress的数据库进行讲解。这个系列包含如下九个部分:
在介绍篇,我将会给出一个概览,关于数据库表以及内容类型的关联——你可能在WordPress开发中用到,是如何存储的。
WordPress 中的内容类型
为了理解具体内容,你需要先了解它们在数据库中是如何存储的。在WordPress中有很多内容:
这些内容类型会被附加一些数据:
此外,还有其他类型的内容是作为不同的方式来存储的:
所有的这些内容都保存在数据库中的某个地方(或者在主题或者插件中,关于这点我将会展示)。它们可能是一条记录或者是其他的一部分(例如被编码到文章中的流式内容)。它们也可能是被其他表所引用的数据。例如,有关用户的数据会被关联到文章中,这样WordPress就会知道是谁编写的。
WordPress 的数据库结构
WordPress使用一些数据库表来存储它们之间的关系——采用一对多的关系。这意味着,一个用户可以有很多文章,而且都会关联到他们的记录中。这样可以节省空间——如果WordPress为每个用户都保存一份数据而不是每篇文章,就会需要很多数据而且占用很多空间。
下面的图选自 WordPress codex,它展示了数据库表以及它们之间的关系:

大多数表都是通过一个子段来关联到其他的一个或者多个表。这些子段都是每一条记录的唯一标示,例如:post_id。更详细的内容请看下表:

TABLE
DATA STORED
LINKED TO
wp_posts
文章,页面,附件,版本和菜单导航项
wp_postmeta (via post_id)
wp_term_relationships(viapost_id)
wp_postmeta
每篇文章的元数据
wp_posts (via post_id)
wp_comments
评论
wp_posts (via post_id)
wp_commentmeta
评论的元数据
wp_comments (via comment_id)
wp_term_relationships
文章和分类法的关系
wp_posts (via post_id)
wp_term_taxonomy (viaterm_taxonomy_id)
wp_term_taxonomy
分类法(包括分类和标签)
wp_term_relationships (viaterm_taxonomy_id)
wp_terms
你的分类、标签和分配到自定义分类法的分类项目
wp_term_taxonomy (via term_id)
wp_links
博客中的链接
wp_term_relationships (vialink_id)
wp_users
用户
wp_posts (via post_author)
wp_user_meta
每个用户的元数据
wp_users (via user_id)
wp_options
站点的设置选项(通过设置界面、主题和插件添加的)


还有一些需要注意的事情:
内容和数据库表的关系
已经看过了WordPress中的内容类型和存储它们的数据库表,这个有助于我们把它们关联起来。下面的表展示了每个表存储的内容类型。

CONTENT TYPE
TABLE(S)
文章
wp_posts
页面
wp_posts
自定义文章类型
wp_posts
附件
wp_posts
链接
wp_links
导航菜单项目
wp_posts
分类
wp_terms
标签
wp_terms
自定义分类法
wp_term_taxonomy
分类法项目
wp_terms
文章元数据
wp_post_meta
小工具
wp_options
选项
wp_options
用户
wp_users
硬编码内容
wp_posts (如果添加到文章中)
wp_options (如果添加到小工具中)
主题和插件文件(如果是硬编码)
第三方内容
wp_posts (如果添加到文章中)
wp_options (如果是小工具或插件添加的)
主题和插件文件(如果是硬编码)


你可能已经注意到了不是所有的数据库表都包含在了上面。那是因为它们是用来保存元数据和其他用来保存关系的,这些内容将会在该系列的后续内容中讲到。

总结
希望您现在对于WordPress是如何使用数据库结构来保存不同类型内容的。这个系列将会关于这方面的所有细节。