wordpress 数据库表
WordPress一共11张表,但并不符合我们以前的一些习惯,导致我们对数据获取总是很困难。特别是文章属性和栏目的获取,真是让人伤透脑筋。下面就对wordpress和文章、栏目及他们之间关系的5张表进行讲解,他们分别是:_postmeta、_posts、_terms、_term_relationships、_term_taxonomy(因为每个站长对自己的数据库前缀规定不同,这里直接省掉,但横线后面的大家应该都相同)。
一、文章表_posts:
_posts内存放的是文章条目相关的记录,它包括如下的字段:
1、ID:文章ID,使用中可以用$post->ID获取;
2、post_author:作者
3、post_date:文章发布的时间
4、post_date_gmt:最早发布的时间
5、post_content:文章内容,使用中可以用$post->post_content调用;
6、post_title:文章标题,可以用$post->post_title调用;
7、post_excerpt:文章摘要
8、post_status:文章状态,publish为已经发布,还有自动草稿等状态
9、comment_status:评论是否开启,open为开启
10、ping_status:是否开启外部ping的功能,open为开启,开启后外部引用该文章地址会收到外部ping通知
11、post_password:文章密码,在编辑文章时有一个公开程度,如果设置了密码,需要密码才能访问
12、post_name:文章别名,如果你的博客在后台设置了固定链接,可以反映在%postname%上,在调用中使用$post->post_name的方法调用;
13、to_ping:向外站发送ping请求,例如向谷歌等搜索引擎发出有新文章的信息;
14、pinged:外站ping了本文,即当外站某篇文章链接到本文,会在这里增加记录
15、post_modified:修改时间
16、post_modified_gmt:最早修改时间
17、post_content_filtered:
18、post_parent:多半指那些自动保存或附加内容从属于哪篇文章,例如一篇相册文章,上传了附件,该附件就从属于该文章。
19、guid:文章的永久链接(一般是短连接),用$post->guid调用文章链接
20、menu_order:这个属性主要针对菜单设置,wordpress3.0之后的版本后台提供了菜单功能,但奇怪的是,只要创建一个菜单选项,就在_posts表中增加一条记录,这个记录中就对应menu_order,可能以此来排列菜单的顺序。
21、post_type:文章的类型,是文章、页面,还是自动保存的版本等;
22、post_mime_type:当post_type=attachment时,这里会出现附件的文件类型
23、comment_count:评论数,显示数值,可以用$post->comment_count调用文章评论数。
在上文的这些属性中我只凭经验理解其用途,在模板文件的文章调用中,你可以尝试$post->guid的方法来调用它们,例如:
while(have_post()): the_post();echo $post->post_title;endwhile;
但不一定管用。
二、文章信息表_postmeta:
_postmeta表记录了对应ID文章的一些meta信息,如自定义栏目信息。它包括四个字段:
1、meta_id:序号标记
2、post_id:对应的文章标记
3、meta_key:meta元素名称,这里面的系统定义有很多,如_edit_lock、_wp_attached_file、_edit_last等,特点是以_开头。
4、? meta_value:meta元素值
举例说明:
文章A上传了一张图片a.jpg,并且附件是按照日前目录放置的,那么就会在该文章对应的post_id的meta_key=_wp_attached_file存在meta_value=yyyy/mm/a.jpg。有时候,我们会为文章添加一个自定义,如自定义名称为postad,自定义值为”这是一段广告代码”,那么我们可以用global $post;$post_id=$post->ID;echo get_post_meta($post_id, "postad", $single = true);在文章页调用这个名称为postad的meta元素,显示出来的就是”这是一段广告代码”。
三、栏目表_terms:
_terms表内存放了所有文章的分类栏目,为了和下面的taxonomy区分,故说成为栏目。它包括四个字段:
1、term_id:序号
2、name:栏目名称,可以是中文名称,可以用$cat->name调用,请在wordpress函数大全:最简单最方便最全面的wordpress函数中的get_the_category()函数中进行查看用法
3、slug:栏目别名,可以用$cat->slug调用。
4、term_group:栏目的组别,很少用。
分类包括post_format,即文章形式,如相册、aside短文章等。
四、栏目和文章对应关系表_term_relationships:
_term_relationships是将文章ID和栏目term_id放在一张表中,以确定该文章所属的栏目。它包括三个字段:
1、object_id:文章或跟文章性质一样的发布形式的ID
2、term_taxonomy_id:栏目分类ID,这个ID会在下面的_term_taxonomy表中出现,虽然不是直接指栏目的ID,但已经间接相等。
3、term_order:
由于wordpress数据库这样安排,让我们在调用文章和栏目时不得不写两条sql语句,操作两张表,有点麻烦。
五、栏目的分类表_term_taxonomy:
这是一张栏目的分类表,描述了某栏目属于什么性质的栏目,包括“category、link_category、post_format、nav_menu”等分类的栏目,它包括四个字段:
1、term_taxonomy_id:栏目分类的ID
2、term_id:栏目的ID。我发现这两个ID是一样的,也就是说term_taxonomy_id=term_id,所以上文的_term_relationships中实际解决了文章和栏目的关系。
3、taxonomy:栏目的分类名称,即“category、link_category、post_format、nav_menu”等,指明term_id对应的栏目属于什么分类。
4、description:描述
5、parent:上级栏目,我们在后台设置文章分类目录时,会将某分类设置为某分类的下级分类,表现就在这里。
6、? count:该分类下的文章数。
有一点需要理解一下,即taxonomy字段中会出现重复值,这是因为该字段只是描述对应term_id的栏目的所属类别,例如标准文章属于post_format,aside短文章也同时属于post_format,两者并不矛盾。<待续>