乌徒帮技术范儿WordPressWordPress内核 › WordPress文章、栏目及他们关系的数据库表初步讲解

WordPress文章、栏目及他们关系的数据库表初步讲解

分类: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,两者并不矛盾。<待续>

已有1条评论 快速评论
  1. […] 我们在wordpress的主题制作中会遇到很多需要对分类栏目(category)进行调用的方法,例如调用对应分类ID的分类名称及描述,根据分类名称调用别名等。本文较为全面的讲解wordpress中于分类栏目相关的各种函数和方法,通过本文的学习,你可以在今后的模板开发中完全自主的操作和调用分类信息。阅读本文的同时,你可以参考《wordpress函数大全:最简单最方便最全面的wordpress函数》《WordPress文章、栏目及他们关系的数据库表初步讲解》这两篇文章,从而或许更多的相关信息。本文花了一个晚上写作编辑完成,很是辛苦,希望朋友们积极参与文章讨论。另外,你可以通过“http://codex.wordpress.org/Function_Reference/is_category”(最后这里是函数名)这样的方法查看wordpress手册。 […]

填写个人信息,赶快回复吧!