数据库

WordPress是使用数据库来实现存储、检索和显示数据功能的。数据库是CMS的最关键的部分,有必要相信,WordPress成功的很大一部分原因就是因为它比较合理的、容易管理的数据库结构。

通过了解数据库的结构,你也可以很容易地解决一些问题。比如,你可以直接通过数据库的操作来实现更改密码、禁用插件、选择主题和做其他事情,而无需访问管理面板。

重要:在进行任何更改之前,请备份您的数据库。

建立数据库连接的wp-config.php

当您新安装的一个WordPress程序的时候,将会被要求提供通过手动编辑wp-config.php文件,或在安装过程中提供信息的数据库信息而自动创建该文件。这里是wp-config.php文件中数据库的一部分。

/** The name of the database for WordPress */
define('DB_NAME', '');
/** MySQL database username */
define('DB_USER', '');
/** MySQL database password */
define('DB_PASSWORD', '');
/** MySQL hostname */
define('DB_HOST', 'localhost');
/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');
/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');
/**
 * WordPress Database Table prefix.
 *
 * You can have multiple installations in one database if you give each a unique
 * prefix. Only numbers, letters, and underscores please!
 */
$table_prefix  = 'wp_';

数据库名,数据库用户名,数据库密码文件的部分的重要性是不言而喻的。数据库字符集是用于创建表的字符集,并不需要去改变utf-8模式为其他的,当然,也可以在必要的时候修改为gb2312等等。

数据库表前缀可以帮助你设置多个wordpress程序安装在一个数据库表中。例如,你可以设置一个wordpress的数据库表安装blog1_前缀,同时设置一些其他的WordPress的的数据库表的前缀为blog2_。

安全提示:建议修改默认的WordPress的数据库表前缀,这样可以使黑客很难猜表名,避免数据库被入侵。

wordpress数据库官方介绍 wordpress数据库官方介绍

clipboard.png

clipboard.png

wp_posts 文章表

博客发表”文章”存放的地方就是这个wp_posts表了。这个表里存放的除了普通的文章之外,还有附件和页面(page)的一些信息。post_type 字段是用来区分文章类型的。如果post_type是’post’,那么就是文章,如果是’page’,那么就是页面,如果是’attachment’, 那么就是附件了.
可能有些用户觉得不好理解的是post_mime_type。你会发现,通常这个选项下面一般情况下是空的,但时,如果文章中有一个post_type的图片附件,那么你会发现,它会显示文件类型,如图像/ JPEG / PDF等等。

clipboard.png

ID:自增唯一ID
post_author:对应作者ID
post_date:发布时间
post_date_gmt:发布时间(GMT+0时间)
post_content:正文
post_title:标题
post_excerpt:摘录
post_status:文章状态(publish/auto-draft/inherit等)
comment_status:评论状态(open/closed)
ping_status:PING状态(open/closed)
post_password:文章密码
post_name:文章缩略名
to_ping:未知
pinged:已经PING过的链接
post_modified:修改时间
post_modified_gmt:修改时间(GMT+0时间)
post_content_filtered:未知
post_parent:父文章,主要用于PAGE
guid:未知
menu_order:排序ID
post_type:文章类型(post文章/page页面等) attachment 表示媒体库
post_mime_type:MIME类型
comment_count:评论总数

clipboard.png

clipboard.png

clipboard.png

wp_postmeta

这个表很简单,只有 meta_id, post_id, meta_key, meta_value 这四个字段。post_id 是相关 “文章” 的id。meta_value 是longtext类型的,这里仅是用来存储值。在撰写文章的时候,在编辑框下面有一个 Custom Fields 的选项,我们可以在这里添加post的meta信息

meta_id:自增唯一ID
post_id:对应文章ID
meta_key:键名
meta_value:键值

wp_comments 评论表

比较重要的两个字段是 comment_post_ID 和 comment_approved,前一个用来指示这条评论隶属于哪一篇文章,后一个用来记录审核状况。还有一个比较有意思的是这个 commnet_agent 字段,可以利用这个字段来统计一下用户浏览器类型。

clipboard.png

clipboard.png

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
comment_type:评论类型(pingback/普通)
comment_parent:父评论ID
user_id:评论者用户ID(不一定存在)

wp_users

用户帐号表。存储用户名、密码还有一些用户的基本信息。

clipboard.png

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_postmeta,存储一些其他的用户信息。
umeta_id:自增唯一ID
user_id:对应用户ID
meta_key:键名
meta_value:键值

wp_options 站点信息表

用来记录Wordpress的一些设置和选项。里面有一个blog_id字段,这个应该是用在MU版里面来标示不同的 Blog 的。autoload这个字段用来控制是否选项总是被WordPress或者插件导入并缓存来使用,或者是否只是在要求的情况下才被导入。

clipboard.png

clipboard.png

option_id:自增唯一ID
blog_id:博客ID,用于多用户博客,默认0
option_name:键名
option_value:键值
autoload:在WordPress载入时自动载入(yes/no)

wp_links 链接表

用来存储 Blogroll 里面的链接。

clipboard.png

clipboard.png

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地址

wp_terms 类别表

存储菜单分类、标签分类名称及URL信息。

term_id:分类ID
name:分类名,就是 term 的名字
slug:缩略名,用于使得 URL 友好化
term_group:用于把相似的 terms 集合在一起

clipboard.png

clipboard.png

wp_term_taxonomy “分类方法表”

存储分类和标签的描述信息、父子关系、所属包含的文章数等。

分类信息,是对wp_terms中的信息的关系信息补充,有所属类型(category,link_category,tag),详细描述所拥有文章(链接)数量。

term_taxonomy_id:分类方法ID
term_id:
taxonomy:分类方法(category/post_tag等)

  • category 文章类别

  • nav_menu 导航栏

  • link_category

  • post_format

  • post_tag

description:未知
parent:所属父分类方法ID
count:文章数统计

wp_term_relationships “post - 分类方法关系表” 存储分类和标签的描述信息、父子关系、所属包含的文章数等

把 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。

object_id:对应文章ID/链接ID
term_taxonomy_id:对应分类方法ID
term_order:排序

Wordpress数据库的优化

WordPress系统使用时间长了,数据库中的冗余数据就会很多,定期优化和清理Wordpress的数据库,可以保证Wordpress能够快速工作。

在此,推荐一款数据库的优化插件:WP-Optimize插件,其具体功能为:删除修改后的WordPress中的冗余数据,删除所有评论中的垃圾数据,删除无效的留言,优化MySQL数据库等等。

当然,你也可以直接使用phpmyadmin的数据库优化功能啦。

其他参考

http://www.oschina.net/question/163913_32508

wordpress文件系统结构


Ocean
1.6k 声望74 粉丝

Mobaxterm