WordPress数据结构分析
WordPress仅仅用了10 个表:wp_comments,wp_links,wp_options,wp_postmeta,wp_posts,wp_term_relationships,wp_term_taxonomy,wp_terms,wp_usermeta,wp_users 按照功能大致分为: wp_users和wp_usermeta: wp_links: wp_posts、wp_postmeta、wp_comments: wp_term,wp_term_relationships,wp_term_taxonomy: wp_options 博客发表”文章”存放的地方就是这个wp_posts表了。这个表里存放的除了普通的文章之外,还有附件和页面(page)的一些信息。post_type字段是用来区分文章类型的。如果post_type是’post’,那么就是文章,如果是’page’,那么就是页面,如果是’attachment’,那么就是附件了. 这个表很简单,只有 meta_id,post_id,meta_key,meta_value 这四个字段。post_id 是相关 “文章” 的id。meta_value 是longtext类型的,这里仅是用来存储值。在撰写文章的时候,在编辑框下面有一个 Custom Fields 的选项,我们可以在这里添加post的meta信息。 比较重要的两个字段是 comment_post_ID 和 comment_approved,前一个用来指示这条评论隶属于哪一篇文章,后一个用来记录审核状况。还有一个比较有意思的是这个 commnet_agent 字段,可以利用这个字段来统计一下用户浏览器类型。 用户帐号表。存储用户名、密码还有一些用户的基本信息。 类似上面的 wp_postmeta,存储一些其他的用户信息。 用来记录Wordpress的一些设置和选项。里面有一个blog_id字段,这个应该是用在MU版里面来标示不同的 Blog 的。autoload这个字段用来控制是否选项总是被WordPress或者插件导入并缓存来使用,或者是否只是在要求的情况下才被导入。 用来存储 Blogroll 里面的链接。 它保存(term)的基本信息。name 就是 term 的名字,slug 是用于使得 URL 友好化。term_group 是用于把相似的 terms 集合在一起。term_id 是term的唯一ID。 分类信息,是对wp_terms中的信息的关系信息补充,有所属类型(category,link_category,tag),详细描述所拥有文章(链接)数量。 把posts和links这些对象和term_taxonomy表中的term_taxonomy_id联系起来的关系表,object_id是与不同的对象关联,例如wp_posts中的ID(wp_links中的link_id)等,term_taxonomy_id就是关联wp_term_taxonomy中的term_taxonomy_id。
<p style="padding-bottom: 0px; margin: 0px 0px 10px; padding-left: 0px; padding-right: 0px; padding-top: 0px">WordPress使用MySQL数据库。作为一个开发者,我们有必要掌握WordPress数据库的基本构造,并在自己的插件或主题中使用他们。 <p style="padding-bottom: 0px; margin: 0px 0px 10px; padding-left: 0px; padding-right: 0px; padding-top: 0px">截至WordPress3.0,WordPress一共有以下11个表。这里加上了默认的表前缀?wp_?。 <p style="padding-bottom: 0px; margin: 0px 0px 10px; padding-left: 0px; padding-right: 0px; padding-top: 0px"><span style="font-style: italic; color: #0000ff;">wp_commentmeta:存储评论的元数据<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"><span style="font-style: italic; color: #0000ff;">wp_comments:存储评论<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"><span style="font-style: italic; color: #0000ff;">wp_links:存储友情链接(Blogroll)<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"><span style="font-style: italic; color: #0000ff;">wp_options:存储WordPress系统选项和插件、主题配置<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"><span style="font-style: italic; color: #0000ff;">wp_postmeta:存储文章(包括页面、上传文件、修订)的元数据<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"><span style="font-style: italic; color: #0000ff;">wp_posts:存储文章(包括页面、上传文件、修订)<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"><span style="font-style: italic; color: #0000ff;">wp_terms:存储每个目录、标签<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"><span style="font-style: italic; color: #0000ff;">wp_term_relationships:存储每个文章、链接和对应分类的关系<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"><span style="font-style: italic; color: #0000ff;">wp_term_taxonomy:存储每个目录、标签所对应的分类<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"><span style="font-style: italic; color: #0000ff;">wp_usermeta:存储用户的元数据<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"><span style="font-style: italic; color: #0000ff;">wp_users:存储用户<span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" id="more-466"> <p style="padding-bottom: 0px; margin: 0px 0px 10px; padding-left: 0px; padding-right: 0px; padding-top: 0px">在WordPress的数据库结构中,存储系统选项和插件配置的wp_options表是比较独立的结构,在后文中会提到,它采用了key-value模式存储,这样做的好处是易于拓展,各个插件都可以轻松地在这里存储自己的配置。 <p style="padding-bottom: 0px; margin: 0px 0px 10px; padding-left: 0px; padding-right: 0px; padding-top: 0px">post,comment,user 则是三个基本表加上拓展表的组合。以wp_users为例,wp_users已经存储了每个用户会用到的基本信息,比如 login_name、display_name、 password、email等常用信息,但如果我们还要存储一些不常用的数据,最好的做法不是去在表后加上一列,去破坏默认的表结构,而是将数据存在wp_usermeta中。wp_usermeta这个拓展表和wp_options表有类似的结构,我们可以在这里存储每个用户的QQ号码、手机号码、登录WordPress后台的主题选项等等。 <p style="padding-bottom: 0px; margin: 0px 0px 10px; padding-left: 0px; padding-right: 0px; padding-top: 0px">比较难以理解的是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记录了每个文章(或链接)所对应的分类方法。 <p style="padding-bottom: 0px; margin: 0px 0px 10px; padding-left: 0px; padding-right: 0px; padding-top: 0px">庆幸的是,关于term的使用,WordPress中相关函数的使用方法还是比较清晰明了,我们就没必要纠结于它的构造了。 <p style="padding-bottom: 0px; margin: 0px 0px 10px; padding-left: 0px; padding-right: 0px; padding-top: 0px">? <p style="padding-bottom: 0px; margin: 0px 0px 10px; padding-left: 0px; padding-right: 0px; padding-top: 0px">? <p style="padding-bottom: 0px; margin: 0px 0px 10px; padding-left: 0px; padding-right: 0px; padding-top: 0px">在上文中我们已经介绍了WordPress数据库中各个表的作用,本文将继续介绍每个表中每个列的作用。WordPress官方文档已经有比较详细的表格,本文仅对常用数据进行介绍。 <p style="padding-bottom: 0px; margin: 0px 0px 10px; padding-left: 0px; padding-right: 0px; padding-top: 0px"><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"><span style="font-style: italic; color: #0000ff;">wp_commentmeta<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">meta_id:自增唯一ID<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">comment_id:对应评论ID<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">meta_key:键名<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">meta_value:键值 <p style="padding-bottom: 0px; margin: 0px 0px 10px; padding-left: 0px; padding-right: 0px; padding-top: 0px">?<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"><span style="padding: 0px; margin: 0px; font-style: italic; color: #0000ff;">wp_comments<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"><span style="font-style: italic;">comment_ID:自增唯一ID<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">comment_post_ID:对应文章ID<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">comment_author:评论者<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">comment_author_email:评论者邮箱<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">comment_author_url:评论者网址<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">comment_author_IP:评论者IP<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">comment_date:评论时间<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">comment_date_gmt:评论时间(GMT+0时间)<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">comment_content:评论正文<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">comment_karma:未知<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">comment_approved:评论是否被批准<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">comment_agent:评论者的USER AGENT<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">comment_type:评论类型(pingback/普通)<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">comment_parent:父评论ID<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">user_id:评论者用户ID(不一定存在)<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"> wordpress中各个表的字段,折腾WordPress必备良品~ wp_categories: 用于保存分类相关信息的表。包括了5个字段,分别是: wp_comments: 用于保存评论信息的表。包括了15个字段,分别为: wp_linkcategories: 用于保存在WP后台中添加的链接的相关信息的表。包括13个字段: wp_links :用于保存用户输入到Wordpress中的链接(通过Link Manager)的表。共14个字段: wp_options: 用于保存Wordpress相关设置、参数的表,共11个字段。最重要是的option_value字段,里面包括了大量的重要信息。 wp_post2cat: 用于保存文章(posts)与分类(categories)之间的关系的表,只有三个字段: 文章与分类的关系的形成是这样的:rel_id是一个不断增加的自增量,它用于识别每不同的post。post_id可以重复(当它对应多个分类时),因为它可被rel_id识别,所以不会出现混乱。每个post_id可对应多个category_id时,一个rel_id + post_id组合,可以识别某一个分类,因此每个文章的分类可以是不同的。通过这张表,可以非常快速、高效地找出某篇文章(post)对应了哪些分类 (category),反之亦然。 wp_postmeta: 用于保存文章的元信息(meta)的表,四个字段: 这些内容主要是在文章及页面编辑页(Write Post,Write Page)的”Add a new custom field to this post(page):”下进行设定的。meta_key就对应名为”key”的下拉列表中的项,而值由用户自己填上(某些时候,wp也会自动加入,如文章中有的音频媒体)。 wp_posts: 用于保存你所有的文章(posts)的相关信息的表,非常的重要。一般来讲,它存储的数据是最多的。一共包括了21个字段。ID – 每篇文章的唯一ID,bigint(20)值,附加属性auto_increment。 wp_usermeta : 用于保存用户元信息(meta)的表,共4个字段: wp_users:用于保存Wordpress使用者的相关信息的表。WP官方对2.0.2版本中该表的情况的说明有些矛盾(称有22个字段,但详细的列表中只有11个),所以这里只能列出11个字段进行说明: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |