WordPress使用MySQL数据库。作为一个开发者,我们有必要掌握WordPress数据库的基本构造,并在自己的插件或主题中使用他们。截至WordPress3.0,WordPress一共有以下11个表。这里加上了默认的表前缀 wp_
。
wp_commentmeta
:存储评论的元数据wp_comments
:存储评论wp_links
:存储友情链接(Blogroll)wp_options
:存储WordPress系统选项和插件、主题配置wp_postmeta
:存储文章(包括页面、上传文件、修订)的元数据wp_posts
:存储文章(包括页面、上传文件、修订)wp_terms
:存储每个目录、标签wp_term_relationships
:存储每个文章、链接和对应分类的关系wp_term_taxonomy
:存储每个目录、标签所对应的分类wp_usermeta
:存储用户的元数据wp_users
:存储用户
在WordPress的数据库结构中,存储系统选项和插件配置的wp_options
表是比较独立的结构,在后文中会提到,它采用了key-value模式存储,这样做的好处是易于拓展,各个插件都可以轻松地在这里存储自己的配置。
post,comment,user 则是三个基本表加上拓展表的组合。以wp_users
为例,wp_users
已经存储了每个用户会用到的基本信息,比如 login_name、display_name、 password、email等常用信息,但如果我们还要存储一些不常用的数据,最好的做法不是去在表后加上一列,去破坏默认的表结构,而是将数据存在wp_usermeta
中。wp_usermeta
这个拓展表和wp_options
表有类似的结构,我们可以在这里存储每个用户的QQ号码、手机号码、登录WordPress后台的主题选项等等。
比较难以理解的是term,即wp_terms
、wp_term_relationships
、wp_term_taxonomy
。在WordPress的系统里,我们常见的分类有文章的分类、链接的分类,实际上还有TAG,它也是一种特殊的分类方式,我们甚至还可以创建自己的分类方法。WordPress将所有的分类及分类方法、对应结构都记录在这三个表中。wp_terms
记录了每个分类的名字以及基本信息,如本站分为“WordPress开发”、“WPCEO插件”等,这里的分类指广义上的分类,所以每个TAG也是一个“分类”。wp_term_taxonomy
记录了每个分类所归属的分类方法,如“WordPress开发”、“WPCEO插件”是文章分类(category
),放置友情链接的“我的朋友”、“我的同事”分类属于友情链接分类(link_category
)。wp_term_relationships
记录了每个文章(或链接)所对应的分类方法。
庆幸的是,关于term的使用,WordPress中相关函数的使用方法还是比较清晰明了,我们就没必要纠结于它的构造了。