在本系列教程的前面部分中,我们已经学习了wordpress数据库的不同表,并且查看了他们存储的数据,以及他们如何进行交互和可以通过什么函数交互。
在最后的部分,我将会转向多站点。安装多站点wordpress将会包含一些额外的表:为运行在网络中各站点的表集,为网络本身的额外的表以及为核心站点的表。
这意味着要理解多站点数据库怎么工作有3个部分需要理解:
- 核心站点中的数据库表
- 网络中的数据库表
- 每一个额外站点中的数据库表
我将会从wordpress怎么储存核心站点的数据库表开始。
多站点中核心站点有关的数据库表
为网络中的核心站点,wordpress使用在单一站点中同样的11个表:
wp_posts
wp_postmeta
wp_comments
wp_commentmeta
wp_users
wp_usermeta
wp_links
wp_term_relationships
wp_term_taxonomy
wp_terms
wp_options
以上这些表包含主站点有关的数据,其中的两个包含关于网络的剩余的数据,它们是:
wp_users
wp_usermeta
其他的9个表与他们在单一站点的工作方式一样-他们存储关于主站点内容的数据。然后剩下的两个表包含跟整个网络有关联的用户数据以及只会在核心站点中使用的用户数据。在这里我查看这些。
网络有关的数据库表
除了把为整个网络储存用户数据放入两个核心表以外,wordpress多站点的安装还会创建其他的表来保存跟网络和站点的数据。包括:
wp_blogs
wp_blog_versions
wp_registration_log
wp_signups
wp_site
wp_sitemeta
wp_sitecategories
(optional)
wordpress使用这7(或6)个表加上两个用户表来存储关于多站点网络的所有数据。以下是它们每一个存储的内容:
表 | 数据 | 说明 |
---|---|---|
wp_blogs |
这个表存储每个站点的细节,所以为每个站点只有一条记录。 | 字段包括`blog_id`,`domain`,`registered`(站点创建的日期),`last_updated`(同样,日期) |
wp_blog_versions |
每个站点的数据库的当前版本,每次更新网络的时候被更新。 | 3个字段:`blog_id`,`db_version`,和`last_updated` |
wp_registration_log |
每个站点注册时创建的管理员用户。 | 为每一个站点(由`blog_id`字段确定),这个表储存管理员的`user_id`,email地址和注册日期。 |
wp_signups |
储存站点中已经注册但还没有激活的数据。 | 字段包括唯一的`signup_id`,注册的域名,题目,用户登陆和email地址。一旦站点激活,这条记录会被删除并且在`wp_blogs`中创建一条记录。 |
wp_site |
存储主要站点的URL | 这个表格只有一条记录,包括3个字段:主要站点的id(值是`1`),站点的域名和路径(通常是`/`) |
wp_sitemeta |
存储关于网络的元数据(metadata) | 这个表与整个网络中的`wp_options`表相当。包含与网络设置相关的元数据以及与单个站点有关的更少量的元数据。包含4个字段:唯一的`meta_id`,`site_id`(链接到`wp_blogs`),`meta_key`和`meta_value`。 |
wp_sitecategories |
可选的表,只有站点的global terms激活才会创建。 | 激活global terms允许你使用网络中跨站点的terms,这个表格(如果被创建)包含4个字段:`cat_ID`,`cat_name`,`category_nicename`和`last_updated`.注意这个表存储terms,不只有目录,尽管字段名只是关于目录。 |
wp_users |
所有用户的数据被存储在这里而不是只是每个单个站点,因为在网络中,单个用户可以进入多站点。 | 在多站点wordpress安装中,这个`wp_users`表会创建2个额外的字段:`spam`和`deleted`.两个字段的值都是布尔值,缺省值为`no`. |
wp_usermeta |
该表存储所有站点的用户的所有元数据(metadata) | 这个表与安装单站点的wordpress使用方法相同。 |
表间的关系
大多数的这些表通过`blog_ID`字段与`wp_blogs`关联,因为网络中所有站点所需的数据需要链接到核心站点记录。例外有:
wp_sitecategories
, 链接到posts和其他的注释。wp_signups
,因为这些是尚未注册的站点。wp_usermeta
,间接的通过`wp_users`链接到`wp_blogs`。
查看更多的关于表格和字段的细节,查看数据库的Codex page 页面。
网络中站点的数据库表
网络中每个站点的的wordpress储存数据的方式相当直接:为每个站点的数据库表创建一个副本,一一对应。然而,并不会为`wp_users`和`wp_usermeta`创建额外的副本,因为这些都被存储在主要的表格中。
为了区分每个站点的不同表,wordpress为表的名称添加了站点ID,比如一个名为2的站点,`wp_posts`就变成了`wp_2_posts`。
每一个站点有下面的表格:
wp_xx_posts
wp_xx_postmeta
wp_xx_comments
wp_xx_commentmeta
wp_xx_links
wp_xx_term_relationships
wp_xx_term_taxonomy
wp_xx_terms
wp_xx_options
上面的`xx`会被替换为数字的站点ID,所有这些表会被以同样的方式存储,就好像只安装了单个站点。
总结
如果你在操作,检索,移动安装了多站点的wordpress的数据,理解多站点安装中多个站点是如何不同的存储数据是非常重要的。
如我所展示的这样,对此有3个主要的元素:核心站点使用的表;把整个网络看作一个整体存储数据的表;每一个新的站点创建的表。这些表的结构与单一站点安装时相似,只要你记住每个站点的两个存储用户数据的表不是重复的。
由 骑着蜗牛去拉萨@wordpress大学 原创翻译,未经允许,禁止转载和采用本译文。