WordPress数据库研究

简介: 该系列文章将会详细介绍WordPress数据总体的设计思路、详细介绍WordPress10个数据表的设计、并对WordPress系统中涉及的用户信息、分类信息、链接信息、文章信息、文章评论信息、基本设置信息这6类信息做详细介绍。

该系列文章将会详细介绍WordPress数据总体的设计思路、详细介绍WordPress10个数据表的设计、并对WordPress系统中涉及的用户信息、分类信息、链接信息、文章信息、文章评论信息、基本设置信息这6类信息做详细介绍。

《WordPress数据库研究(2.6.2版本)》包括了以下内容:

1、数据库简介及数据表关系介绍

2、wp_comments评论数据表介绍

3、wp_links链接数据表介绍

4、wp_options基本配置数据表介绍

5、wp_postmeta文章特殊信息数据表介绍

6、wp_posts文章信息数据表介绍

7、wp_terms分类信息数据表介绍

8、wp_term_relationships分类关系数据表介绍

9、wp_term_taxonomy分类信息数据表介绍

10、wp_usermeta用户数据表介绍

11、wp_users用户信息表介绍

12、用户信息数据库操作介绍

13、分类信息数据库操作介绍

14、链接信息数据库操作介绍

15、文章信息数据库操作介绍

16、文章评论信息数据库操作介绍

17、基本信息数据库操作介绍

 

一 概述

本章简要介绍WordPress数据库的相关知识,让您对这个优秀的博客系统数据库设计的总体构成能够有基本的认识。(如果您是对本文描述的10个数据表之间的关系不理解,没关系,接着看完本系列文章在回过头来看,相信那个时候你就会完全理解这篇文章所说的内容了。)

优秀的WordPress博客系统是构建在10个数据库表的基础之上的,WordPress的官方文档对这10个数据表有一个大概的介绍,具体网址是:WordPress数据库官方文档

WordPress数据库的10个数据表分别是:

表名(点击表名查看详细介绍) 描述
wp_comments 文章评论信息表
wp_links 链接信息表
wp_options 基本配置信息表,通常通过get_option来操作,该表通常作为插件存储数据的一个地方。
wp_postmeat 文章额外数据表,例如文章浏览次数,文章的自定义字段等都存储在这里。
wp_posts 文章信息表,包括了日志、附件、页面等等信息。是WordPress最重要的一个数据表。
wp_terms 文章分类、链接分类、标签的信息表。
wp_term_relationships 分类与文章信息表(wp_posts)、链接表(wp_links)的关联表。
wp_term_taxonomy 分类信息表,区分wp_terms信息的分类类型,有category、link_category和tag三种分类类型。
wp_usermeta 用户额外信息表
wp_users 用户基本信息表。存放系统所有用户基本信息。

WordPress数据库表之间的关系是什么呢?

要搞明白这个问题以及对WordPress数据表之间的关系有更加深刻的理解,让我们先来想想WordPress博客系统的功能,默认安装的WordPress2.6.2版本博客系统涉及的数据信息主要包括了用户信息、分类信息、链接信息、文章信息、文章评论信息、基本配置信息这6类信息。

用户信息:系统中所有注册用户的帐号信息。

分类信息:包括了文章分类、链接分类、标签这3中分类信息。

链接信息:就是博客系统中的友情链接信息。

文章信息:博客系统中的日志、日志产生的附件、页面等信息。

文章评论信息:对具体日志或者附件的评论信息。

基本配置信息:系统中的基本配置信息,例如博客名称,博客地址等等。

WordPress数据库的10个数据表就是为了存储以上6类数据信息而设计,这些表之间的总体关系结构如下图所示:

从上图可以看出WordPress博客系统6类数据信息分别所涉及的数据表及关系如下表所示:

信息类型 涉及数据表及关联关系
用户信息 数据表:wp_users、wp_usermeta,关联关系:wp_users.ID->wp_usermeta->user_id
分类信息 数据表:wp_terms、wp_term_taxonomy关联关系:wp_terms->term_id->wp_term_taxonomy
链接信息 数据表:wp_links、wp_term_relationships、wp_terms、wp_term_taxonomy、wp_users、wp_usermeta关联关系:一,确定链接所属分类(1)wp_links.link_id->wp_term_relationships.object_id,(2)wp_term_relationships.term_taxonomy_id->wp_term_taxonomy.term_taxonomy_id
(该关系还要取决与wp_term_taxonomy表中的taxonomy分类类型为“link_category”)(3)wp_terms->term_id->wp_term_taxonomy二、确定链接所有者(4)wp_links.link_owner->wp_users.ID(5)wp_users.ID->wp_usermeta.user_id
文章信息 数据表:wp_posts、wp_postmeta、wp_comments、wp_term_relationships、wp_terms、wp_term_taxonomy、wp_users、wp_usermeta关联关系:一、确定文章信息(1)wp_posts.ID->wp_postsmeta.post_id二、确定文章评论(2)wp_posts.ID->wp_comments.comment_post_id三、确定文章评论的作者(3)wp_comments.comment_author->wp_users.ID

 

(4)wp_users.ID->wp_usermeta.user_id

四、确定文章所属分类

(5)wp_posts.ID->wp_term_relationships.object_id,

(6)wp_term_relationships.term_taxonomy_id->wp_term_taxonomy.term_taxonomy_id
(该关系还要取决与wp_term_taxonomy表中的taxonomy分类类型为“category”或者“tag”)

(7)wp_terms->term_id->wp_term_taxonomy

五、确定文章作者

(8)wp_posts.author->wp_users.ID;

(9)wp_users.ID->wp_usermeta.user_id

文章评论信息 数据表:wp_comments、wp_posts、wp_users、wp_usermeta关联关系:一、确定评论的文章(1)wp_comments.comment_post_id->wp_posts.ID二、确定评论的作者(2)wp_comments.comment_author->wp_users.ID(3)wp_users.ID->wp_usermeta.user_id
基本配置信息 数据表:wp_options没有关联关系

 

二 wp_comments评论数据表介绍

该篇文章将会详细的介绍WordPress数据库中wp_comments评论数据表各个字段的含义,并会介绍wp_comments数据表的索引信息。

wp_comments数据表中存储着WordPress博客系统的评论信息,包括已经通过审核的、等待审核的以及垃圾评论信息。该表的各个字段的具体含义如下图所示(该图来源与西北大学WordPress源码解读小组):

wp_comments评论数据表WordPress数据库
wp_comments评论数据表—WordPress数据库

wp_comments评论数据表的设计结构可以看出,该表分别与wp_posts文章信息表wp_users用户信息表有关联关系。其中wp_comments数据表通过外键comment_post_ID与wp_posts数据表相关联着,也就是说某条评论信息必然是对某篇文章信息所做的评论;wp_comments数据表通过外键user_id与wp_users用户数据表相关联,如果user_id为0则为游客评论,也就是说当wp_comments表中user_id为0,那么就没有必要去查询wp_users用户数据表了。

其实以上这段话说白了就是:评论肯定是对某篇文章的评论。评论人是本站注册用户,也可以是游客、tracback(机器)等(游客当然和系统的用户信息表没有关系了)。

wp_comments评论数据表的索引在WordPress2.6.2版本中有5个,如下(下图来源于WordPress官方数据库介绍):

wp_comments评论数据表的索引
wp_comments评论数据表的索引

上图列出wp_comments评论数据表的主要目的是希望在您开发评论相关的插件或者函数接口时,能够根据以上索引信息来优化您的SQL语句。

 

三 wp_links链接数据表

该篇文章将会详细的介绍WordPress数据库中wp_links链接数据表各个字段的含义,并会介绍wp_links数据表的索引信息。如果你对WordPress博客系统中10个数据表的总体关系还不清楚,请返回该系列文章的第一篇《WordPress数据库简介》。

wp_links链接数据表保存着WordPress博客系统中所有的链接信息,也就是所谓的友情链接信息。该表的各个字段的详细含义如下图所示(本图来源于西北大学WordPress源码解读小组):

wp_links链接表WordPress数据库
wp_links链接表—WordPress数据库

熟悉WordPress博客系统的朋友都应该知道在WordPress中链接还可以具有分类,也就是说可以为链接创建链接分类、然后再给指定的链接分类添加链接。例如心花放足球队博客中的链接分类有我们的宝贝儿、我们的家属、我们的队员等,并且在这些链接分类下分别增加了一些链接信息。

也就是说wp_links表只存储了具体链接信息,要使链接具有分类属性,那么它必须与链接分类数据表相关联。从上图中也可以看出来,wp_links链接表wp_term_relationships链接分类关联表相关联实现链接分类功能。

wp_links链接表中如何查询出某链接所属的链接分类是通过主键link_id与wp_term_relationships链接分类关联表的object_id相关联,从而进一步关联wp_term_taxonomy分类类型表wp_terms分类信息表。具体关于链接信息及链接分类信息相关联的详细信息请参考《链接信息数据库操作介绍》,在这里不做进一步介绍了。

链接信息除了具有链接分类属性外,还具有链接拥有者属性,也就是通过wp_links链接表中的外键link_owner与wp_users用户表的ID相关联。链接必须具有拥有者,我的理解就是wp_links链接表通过link_owner来标记是谁创建了这个链接。

wp_links链接表的索引信息如下表所示:

wp_links索引信息wordpress数据库
wp_links索引信息—wordpress数据库

上图列出wp_links链接表的主要目的是希望在您开发链接信息相关的插件或者函数接口时,能够根据以上索引信息来优化您的SQL语句。

 

四 wp_options基本配置表

该篇文章将会详细的介绍WordPress数据库中wp_options基本配置表各个字段的含义以及wp_options数据表与其它数据表的关联关系,并会进一步介绍wp_links数据表的索引信息。如果你对WordPress博客系统中10个数据表的总体关系还不清楚,请返回该系列文章的第一篇《WordPress数据库简介》。

wp_options配置表保存着WordPress博客系统中所有的基本配置信息。例如博客的名称、博客地址等,这些配置信息通常都是通过WordPress管理后台的“设置(settings)”功能来进行配置;有一部分配置信息则是通过具体插件管理的界面进行配置。通俗点来说,就是你在WordPress设置(settings)中设置的内容都保存在wp_options配置表中。

该表的各个字段的详细含义如下图所示(本图来源于西北大学WordPress源码解读小组):

wp_options配置表WordPress数据库

wp_options配置表—WordPress数据库

WordPress模板制作开发中你通常可以通过“bloginfo(配置名)”来引用指定设置的值,或者在WordPress插件开发中可以通过“get_option(设置名)”来获得配置的值。例如想得到常规设置中设置的博客名称可以通过:<?php bloginfo(‘name’); ?>取得。看到这里也许有一部分朋友和我一样会有一个疑问:“我怎么知道bloginfo函数可以使用的配置名都有哪些呀”,关于这个问题以及get_option请参考剑锋博客的文章:《基本信息数据库操作介绍》。

wp_options配置表是WordPress数据库中唯一一个个和其它任何数据表都没有关联关系的数据表。

wp_options配置表的索引信息如下表所示:

wp_options配置表索引WordPress数据库

wp_options配置表索引——WordPress数据库

上图列出wp_options配置表的主要目的是希望在您进行WordPress插件开发利用wp_options配置表存储数据时,能够根据以上索引信息来优化您的SQL语句。


五 wp_postmeta文章特殊数据表

该篇文章将会详细介绍WordPress数据库中wp_postmeta文章特殊数据表各个字段的含义以及wp_postmeta文章特殊数据表与其它数据表的关联关系,并会进一步介绍wp_postmeta文章特殊数据表的索引信息。如果你对WordPress博客系统中10个数据表的总体关系还不清楚,请返回该系列 文章的第一篇《WordPress数据库简介》。

wp_postmeta文章特殊数据表保存着文章的特殊数据信息,什么是文章的特殊数据呢?文章特殊数据信息也就是文章最后编辑时间、文章的浏览量、文章的自定义字段等等。为什么叫做文章特殊数据呢?我个人的理解是这些数据每一篇文章都不一样的。

该表的各个字段的详细含义以及索引信息如下图所示(本图来源于西北大学WordPress源码解读小组):

wp_postmeta文章特殊数据表WordPress数据库

wp_postmeta文章特殊数据表——WordPress数据库

wp_postmeta文章特殊数据表与其它表的关联关系:

文章特殊信息数据表是通过外键post_id与wp_posts文章表的ID关联起来的,例如要查找ID为1的文章的特殊数据可以通过以下SQL语句实现:

SELECT * FROM `wp_postmeta` WHERE `post_id`=’1′

上图同时也列出了wp_postmeta文章特殊数据表的索引信息的主要目的是希望在您进行WordPress插件开发或者编写特殊函数接口时,能够根据以上索引信息来优化您的SQL语句。

 

六 wp_posts文章数据表介绍

该篇文章对WordPress数据库中最重要的wp_posts文章数据表做详细介绍,主要包括对wp_posts文章数据表各个字段的含义、与其它数据表的关联关系、索引信息,以及使用wp_posts文章数据表的一些感受。如果你对WordPress博客系统中10个数据表的总 体关系还不清楚,请返回该系列 文章的第一篇《WordPress数据库简介》。

wp_posts文章数据表是WordPress博客系统最核心的一个数据表,该表存储着博客系统中所有的文章数据,这些文章数据就是通过管理后台的“日志管理和页面管理”中所产生的数据,主要包括了日志信息和页面信息。

该表的各个字段的详细含义以及索引信息如下图所示(本图来源于西北大学WordPress源码解读小组):

wp_posts文章数据表WordPress数据库

wp_posts文章数据表—WordPress数据库

wp_posts文章数据表图中可以看到该数据表的字段特别多,yangjf个人认为不管是进行WordPress模版制作开发,还是WordPress插件开发,都非常有必要记住、熟悉、理解以上各个字段。具体的关于文章信息的数据库操作请看:《用户信息数据库操作介绍

备注:文章数据表将日志、页面中所涉及的附件等也都单独生成一篇文章,例如日志中的一张图片、一个Word文档……

wp_posts文章数据表与其它数据表的关系:

文章数据表一共与其它7个数据表有关系,其中与4个数据表有直接关系,与3个数据表有间接关系。这些关联的数据表分别为:

一、直接关联关系表

(1)wp_postmeta文章特殊数据表

(2)wp_comments文章评论表

(3)wp_users用户表

(4)wp_term_relationships分类关联表

二、间接关联关系表

(5)wp_term_taxonomy分类类型表

(6)wp_terms分类表

(7)wp_usermeta用户信息表

 

七 wp_terms分类信息表

该篇文章对WordPress数据库中的wp_terms分类信息表表做详细介绍,包括了wp_terms分类信息表各个字段的含 义、与其它数据表的关联关系、索引信息。如果你对WordPress博客系统中10个数据表的总 体关系还不清楚,请返回该系列 文章的第一篇《WordPress数据库简介》。

wp_terms分类表是WordPress博客系统基础数据表之一,该表存储着博客系统中的分类信息,包括了文章分类信息、链接分类信息,以及标签信息。具体如何从数据库中查询相应的分类信息请参阅:《分类信息数据库操作介绍》,下边首先了解一下wp_terms分类表各个字段的含义,如下图(本图来源于西北大学WordPress源码解读小组)所示:

wp_terms分类表WordPress数据库

wp_terms分类表—WordPress数据库

WordPress博客系统中所有的分类信息“文章分类、链接分类、标签”都存储在以上的数据表,但是怎么确定这些分类信息的类型呢?这就是由与wp_terms分类表相关联的wp_term_taxonomy分类类型表来判断。分类信息又是怎么与具体的文章、链接、标签所关联起来呢?关于这个问题的请参阅:《分类信息数据库操作介绍》。

wp_terms分类表与其它数据表的关联关系:

分类表与wp_term_taxonomy分类类型表wp_term_relationships分类关联表三个表共同构成了WordPress博客系统的分类信息存储载体。

也就是说在WordPress博客系统中,wp_terms分类表中存储着分类信息;wp_term_taxonomy分类类型表存储着分类类型的信息,它决定了wp_terms分类表中分类的类型是文章分类,还是链接分类,或者是标签;wp_term_relationships分类关联表则存储着分类信息与文章、链接的关联关系。这些数据表之间的关于分类信息的数据库操作请参阅:《分类信息数据库操作介绍》。

wp_terms分类表的索引信息:

wp_terms分类表索引信息wordpress数据库

wp_terms分类表索引信息——wordpress数据库

上图列出了wp_terms分类表的索引信息的主要目的是希望在您进行WordPress插件开发或者编写特殊函数接口时,能够根据以上索引信息来优化您的SQL语句。

 

八 wp_term_relationships分类关系表

该篇文章对WordPress数据库中的wp_term_relationships分类关联关系信息表做详细介绍,包括了wp_term_relationships分类关联关系信息表各个字段的含 义、与其它数据表的关联关系、索引信息。如果你对WordPress博客系统中10个数据表的总 体关系还不清楚,请返回该系列 文章的第一篇《WordPress数据库简介》。

wp_term_relationships分类关系表是WodPress系统中存储分类与具体文章或者链接的关联关系的数据表。该表是三个分类数据表与wp_posts文章表、wp_links链接表之间相互关联的桥梁。更多相关资料可以参阅:《wp_terms分类表—WordPress数据库》、《wp_term_taxonomy分类类型表》以及详细介绍分类信息数据库操作的《分类信息数据库操作介绍》。

下边首先了解一下wp_term_relationships分类关系表各个字段的含义,如下图(本图来源于西北大学WordPress源码解读小组)所示:

wp_term_relationships分类关系表WordPress数据库

wp_term_relationships分类关系表——WordPress数据库

wp_term_relationships分类关系表与其它数据表的关联关系:

wp_term_relationships分类关系表通过外键object_id与wp_posts文章表的ID相关联、或者通过外键object_id与wp_links链接表的link_id相关联。

究竟wp_term_relationships分类关系表中给定的一条记录的object_id是wp_posts->ID关联,还是与wp_links->link_id关联还要取决于该记录object_id对应的term_taxonomy_id在wp_term_taxonomy分类类型表中的具体类型。

在这里只要了解wp_term_relationships分类关系表是分类信息与具体文章或者链接的桥梁就可以了,进一步如何判断一个分类信息是文章分类、还是链接分类、或者是tag信息,请参阅:《wp_term_taxonomy分类类型表》与《分类信息数据库操作介绍》。

wp_term_relationships分类关系表的索引信息:

wp_term_relationships分类关系表索引信息WordPress数据库

wp_term_relationships分类关系表索引信息——WordPress数据库

上图列出了wp_term_relationships分类关系表的索引信息的主要目的是希望在您进行WordPress插件开发或者编写特殊函数接口时,能够根据以上索引信息来优化您的SQL语句。

 

九 wp_term_taxonomy分类类型信息表

该文对WordPress数据库中的wp_term_taxonomy分类类型信息表做详细介绍,包括了 wp_term_taxonomy分类类型信息表各个字段的含 义、与其它数据表的关联关系、索引信息。如果你对WordPress博客系统中10个数据表的总 体关系还不清楚,请返回该系列 文章的第一篇《WordPress数据库简介》。

wp_term_taxonomy分类类型信息表存储着分类是属于文章分类,还是链接分类,还是标签分类的类型信息。

该表各个字段的含义,如下图(本图来源于西北大学WordPress源码解读小组)所示:

wp_term_taxonomyWordPress数据库

其中分类类型由字段”taxonomy“来决定,分别是:category(文章分类)、link_category(链接分类)、tag(标签)。

wp_term_taxonomy分类类型表索引信息:

wp_term_taxonomywordPress数据库

wp_term_taxonomy—wordPress数据库

上图列出了wp_term_taxonomy分类类型表的索引信息的主要目的是希望在您进行WordPress插件开发或者编写特殊函数接口时,能够根据以上索引信息来优化您的SQL语句。

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
7天前
|
云安全 人工智能 运维
阿里云联动百位企业安全专家,共识Agent防御最佳实践
当Agent成为新员工,你的安全边界在哪里?
1922 6
阿里云联动百位企业安全专家,共识Agent防御最佳实践
|
5天前
|
存储 人工智能 关系型数据库
阿里云AI产品与云产品最新组合套餐:Token Plan、AI coding及云服务器和建站等组合优惠价
阿里云推出全新“算力+模型+应用”一站式云与AI组合套餐活动,覆盖从个人开发者到中大型企业的全场景需求。核心亮点为分三档定价的Token Plan订阅服务,支持Qwen3.8-Max-Preview大模型调用,错峰时段最低可享0.2折优惠。活动同步推出AI Coding、智能体部署、云电脑托管、0代码建站等十余类场景化组合,搭配99元/年的普惠云服务器、88元/年的入门数据库等经典特惠产品,还为企业提供1V1定制化AI转型方案,大幅降低了不同用户群体拥抱AI的技术门槛与采购成本。
652 111
|
15天前
|
人工智能 JSON 安全
Fastjson远程代码执行漏洞,阿里云AI安全为您保驾护航
阿里云AI安全产品联动防御Fastjson攻击
2556 13
Fastjson远程代码执行漏洞,阿里云AI安全为您保驾护航
|
7天前
|
人工智能 弹性计算 数据库
阿里云优惠券种类解析:主要券种区别和适用群体及领取和使用指南
2026年阿里云构建了覆盖全用户的七类优惠券,本文逐一拆解了每类优惠券的核心规则、适用人群与使用技巧:大促限定的阶梯满减券分个人、企业双通道,最高可减800元;学生专属300元无门槛券支持全品类通用;按量付费用户可参与消费达标返券形成循环优惠;新用户有低门槛专享满减券尝鲜;老用户可领取系统自动发放的随机福利券;中大型企业迁云可申请最高100万元的专项补贴;云产品通用券还能在活动价基础上实现折上折。不同身份、不同采购场景的用户均可通过精准匹配对应优惠券,最大化享受优惠力度。
462 110
阿里云优惠券种类解析:主要券种区别和适用群体及领取和使用指南
|
13天前
|
人工智能 前端开发 Linux
Codex 桌面版安装 + CC Switch 接入第三方 API 完整教程(2026 最新)
2026最新教程:手把手教你安装Codex桌面版,通过CC Switch v3.17.0一键接入Fenno等国产API(兼容OpenAI Responses格式),跳过账号登录,完整启用代码审查、多步任务与上下文感知功能。零基础友好,全程图文实操。(239字)
1620 2
|
15天前
|
人工智能 自然语言处理 数据挖掘
Qwen3.8-Max-Preview深度全解析:2.4万亿参数旗舰MoE模型+Token Plan限时优惠完整落地指南
2026年7月,全新旗舰级混合专家大模型Qwen3.8-Max-Preview正式开放抢先体验,作为通义千问Qwen3系列规格最高、综合推理能力顶尖的新一代模型,该模型总参数量达到2.4万亿(2.4T),是当前线上可调用的原生多模态旗舰模型,综合推理水准对标海外顶级Fable 5模型,在复杂工程开发、长文档深度分析、多步骤智能体自治、跨境多语言创作、海量数据挖掘五大高难度业务场景实现跨越式性能提升。
1428 2
|
17天前
|
人工智能
Qwen3.8抢先体验!正式版即将发布并开源!
千问Qwen3.8即将开源,参数达2.4T,进化速度以“天”计,实力媲美Fable 5。预览版Qwen3.8-Max已上线阿里Token Plan等平台,限时优惠:日间Credits低至1折,夜间更优,个人/团队版月付仅35元起!
1499 55
|
2天前
Qoder 一周年 × Qwen3.8-Max 正式上线,多重好礼限时领
8月3日,Qwen3.8-Max 正式上线Qoder,迎来Qoder一周年。新老用户可领800次免费调用,下单再赠2000次;夜间(22:00–08:00)调用5折;邀请好友双方得积分与调用额度。
249 0