文章目录(Table of Contents)
简介
本文会介绍 WordPress
中的数据库,具体来说会介绍WordPress
中常用的 10
个数据表。首先会大致介绍这 10
个数据表,简单分为 6
类。接着会详细介绍10
个数据表。
参考资料
- zh-cn:数据库描述,
WordPress
官方对数据库的说明; - WordPress使用MySQL数据库及各个表的结构,简书上一篇对
WordPress
数据库的介绍(本文基于这篇文章进行扩写); - Understanding WordPress GUIDs: What They Are, and Why Change Them,对 GUID 的理解;
WordPress 数据库简介
我在这里将 WordPress
中的数据表分为 6
类,我们会在后面的章节对这些表进行详细的介绍。
- 系统选项配置表
wp_options
:存储WordPress
系统选项和插件、主题配置;
- 文章表(非常重要)
wp_posts
:存储文章(包括页面、上传文件、修订);wp_postmeta
:存储文章(包括页面、上传文件、修订)的元数据;
- 文章分类与文章标签表(非常重要)
wp_terms
:存储每个「文章分类」、「文章标签」的名称等;wp_term_taxonomy
:存储每个term
是「文章分类」、「文章标签」;wp_term_relationships
:存储每个文章是什么「文章分类」,有哪些「文章标签」;
- 用户信息表
wp_users
:存储用户;wp_usermeta
:存储用户的元数据;
- 评论表
wp_comments
:存储评论;wp_commentmeta
:存储评论的元数据;
- 友链表
wp_links
:存储友情链接(Blogroll);
带有 Meta 的数据表
在 WordPress
数据库中,会有一些表是带有 meta
的,例如 wp_users
和 wp_usermeta
,wp_comments
和 wp_commentmeta
,wp_posts
和 wp_postmeta
。那么这些带有 meta
的数据表和不带有meta
的数据表会有什么区别呢,本节会对这两类数据表进行介绍。
以 wp_users
为例, wp_users
已经存储了每个用户会用到的基本信息,比如 login_name
、display_name
、 password
、email
等常用信息,但如果我们还要存储一些不常用的数据,最好的做法不是去在表后加上一列,去破坏默认的表结构,而是将数据存在 wp_usermeta
中。下图是 wp_users
表中每一个字段:
wp_usermeta
采用了 key-value
模式存储,我们可以在这里存储每个用户的 QQ 号码、手机号码、登录 WordPress
后台的主题选项等等。下图是wp_usermeta
中的每一个字段:
我们具体来看一下 wp_usermeta
中的内容,可以看到会包含一个用户其他的额外信息,例如介绍(description
),昵称(nickname
)等:
WordPress 数据表详细介绍
下面会详细介绍前面提到的六类表,其中我认为比较重要的是「文章表」和「文章分类与文章标签表」,分别记录文章的内容和文章所属的类别。
系统选项配置表
wp_options
表:存储系统选项和插件配置的 wp_options
表是比较独立的结构,它采用了key-value
模式存储,这样做的好处是易于拓展,各个插件都可以轻松地在这里存储自己的配置。
下面是 wp_options
表所有的字段和字段的介绍。wp_options
表中会存储本站的地址(siteurl
),博客的名称(blogname
),管理者邮箱(admin_email
)等信息;
- option_id:自增唯一 ID
- blog_id:博客 ID,用于多用户博客,默认 0
- option_name:键名
- option_value:键值
- autoload:在 WordPress 载入时自动载入(yes/no)
用户表
wp_users
表:wp_users
表主要记录用户的基础信息,包括登录的名和密码的哈希值。下面是wp_users
表所有的字段和字段的含义:
- ID:自增唯一 ID(用户 ID)
- user_login:登录名
- user_pass:密码
- user_nicename:昵称
- user_email:Email
- user_url:网址
- user_registered:注册时间
- user_activation_key:激活码
- user_status:用户状态
- display_name:显示名称
wp_usermeta
表:wp_usermeta
表会对wp_users
表中的用户进行一些补充,包括「用户介绍」,「用户权限」等。下面是wp_usermeta
表所有的字段和字段的含义,我们通过 user_id
和 meta_key
可以找到某个用户的某个信息:
- umeta_id:自增唯一ID
- user_id:对应用户ID
- meta_key:键名
- meta_value:键值
评论表
wp_comments
表:wp_comments
表会存储网站的评论。下面是wp_comments
表所有的字段和字段的介绍:
- comment_ID:自增唯一 ID
- comment_post_ID:对应文章 ID(这个评论在哪一篇文章下面)
- comment_author:评论者(名称)
- comment_author_email:评论者邮箱
- comment_author_url:评论者网址
- comment_author_IP:评论者IP
- comment_date:评论时间
- comment_date_gmt:评论时间(GMT+0时间)
- comment_content:评论正文(评论的内容)
- comment_karma:未知
- comment_approved:评论是否被批准
- comment_agent:评论者的 USER AGENT,类似 Mozilla/5.0;
- comment_type:评论类型(pingback/ comment)
- comment_parent:父评论 ID(回复某一个评论)
- user_id:评论者用户ID(不一定存在)
wp_commentmeta
表:wp_commentmeta
表的结构与wp_usermeta
表类似,也是对评论内容的补充。下面是wp_commentmeta
表所有的字段和字段的含义:
- meta_id:自增唯一ID
- comment_id:对应评论ID
- meta_key:键名
- meta_value:键值
文章表
wp_posts
表:下面是 wp_posts
表的所有字段和字段的介绍。其中加粗的字段是其中需要的。
- ID:自增唯一 ID(文章的 ID)
- post_author:对应作者 ID
- post_date:发布时间
- post_date_gmt:发布时间(GMT+0时间)
- post_content:正文内容
- post_title:标题
- post_excerpt:摘录(每篇文章的简单概述)
- post_status:文章状态(publish/auto-draft/inherit等),这里默认是
publish
; - comment_status:评论状态(open/closed),这里默认是
open
; - ping_status:PING状态(open/closed),这里默认是
open
; - post_password:文章密码
- post_name:文章缩略名(可以用文章缩略名作为 URL)
- to_ping:未知
- pinged:已经PING过的链接
- post_modified:修改时间
- post_modified_gmt:修改时间(GMT+0时间)
- post_content_filtered:未知
- post_parent:父文章,主要用于 PAGE(页面)
- guid:每一篇文章有唯一的
guid
,guid
用于 RSS feed。guid 的格式一般为网站域名+?p=[ID]
(The most common place the GUID is used is in the WordPress RSS feed. Since the RSS 2.0 specification was published in 2002, RSS feeds have implemented the guid element as a unique identifier for any feed item.) - menu_order:排序ID,默认是
0
; - post_type:文章类型(post/page等),这里默认是
post
; - post_mime_type:MIME类型
- comment_count:评论总数,默认是
0
;
wp_postmeta
表:wp_postmeta
表的结构与wp_usermeta
表类似,是对文章内容的补充。也是通过 post_id
和 meta_key
可以找到对应文章的信息。其中比较重要的 meta_key
有缩略图的链接(thumbnail
) 和 文章阅读次数(views
)。例如 Mysql基础知识02-基础SQL语句 这篇文章目前被阅读了 39
次:
下面是 wp_postmeta
表的所有字段和字段的含义
- meta_id:自增唯一ID;
- post_id:对应文章ID;
- meta_key:键名;
- meta_value:键值;
文章分类与文章标签表
wp_terms
表:主要记录「文章标签」与「文章分类」。他的字段和字段介绍如下所示:
- term_id:分类ID
- name:分类名
- slug:缩略名(用于
url
的显示) - term_group:未知
例如「北邮人论坛十大」,既是「文章标签」,也是「文章分类」,因此在 wp_terms
表中会有两条记录,如下所示:
wp_term_taxonomy
表:主要记录每一个 term
的所属分类,例如是「文章分类」还是「文章标签」。同时也会记录该 term
的文章个数等信息;
- term_taxonomy_id:分类方法ID;
- term_id:对应
wp_terms
表中的term
; - taxonomy:分类方法(category/post_tag),这里
category
是「文章分类」,post_tag
是「文章标签」; - description:对
term
的解释 ; - parent:所属父分类方法 ID;
- count:文章数统计;
例如对 wp_terms
表中的 208
和 210
来说,他们在 wp_term_taxonomy
表中的结果如下所示。可以看到 208
是「文章分类」,而 210
是「文章标签」。
wp_term_relationships
表:记录每一篇文章使用了哪一些 term
。及文章的「标签」和「分类」。他的字段和字段介绍如下所示:
- object_id:对应文章ID/链接ID
- term_taxonomy_id:对应分类方法ID
- term_order:排序
例如对于文章 北邮人论坛十大_2021-11-19 来说,他的文章分类是「北邮人论坛十大」,文章标签是「北邮人论坛十大」和「北邮人论坛」,于是可以查到下面三条记录:
友链表
wp_links
表:wp_links
表记录友链。下面是该表的所有字段和字段的含义:
- link_id:自增唯一ID
- link_url:链接URL
- link_name:链接标题
- link_image:链接图片
- link_target:链接打开方式
- link_description:链接描述
- link_visible:是否可见(Y/N)
- link_owner:添加者用户ID
- link_rating:评分等级
- link_updated:未知
- link_rel:XFN关系
- link_notes:XFN注释
- link_rss:链接RSS地址
- 微信公众号
- 关注微信公众号
- QQ群
- 我们的QQ群号
评论