关于 WordPress 分类与分类方法的困惑

追格官方小助手/ 2022年12月20日/ WordPress/ 浏览 1753

WordPress 文章和分类可以说是重中之重,WordPress提供了丰富的 API ,自定义分类什么的都不是问题。如果,只是使用 WordPress 系统,而并非开发者的话,就更没啥问题了。


今天,所说的关于 WordPress 分类与分类方法的困惑,主要是 WordPress 数据库中关于分类相关的数据库表的设计。


根据 WordPress 文档,设计到分类的数据库表有:wp_term,wp_termmeta,wp_term_taxonomy,wp_term_relationships 四个表。


不看其数据表结构,先盲猜一下各个表是干什么的:


wp_term 分类表,category,post_tag等及自定义的分类信息,名称、简介什么的。


wp_termmeta 分类属性表,各种附加属性,和 wp_postmeta、wp_usermeta 类似。


wp_term_taxonomy 分类方法表,也就是【分类的分类】,WordPress 自带的有 category 文章分类,post_tag 文章标签。我们还可以自定义,比如电影分类,音乐分类等……


wp_term_relationships 文章-分类关系表,简单说就是:文章和文章分类的对应关系。


好像少了一个表:分类与分类方法之间的对应关系表


说明,肯定是猜错了……


看一下数据表结构吧。


唯一猜对的就是 wp_termmeta 表,就先不论了。看看其他三张表:


wp_terms


term_id:分类ID


name:分类名


slug:缩略名


term_group:未知


wp_term_taxonomy


term_taxonomy_id:分类方法ID


term_id:分类ID


taxonomy:分类方法(category/post_tag)


description:描述


parent:所属父分类方法ID


count:文章数统计


wp_term_relationships


object_id:链接到wp_posts 表的 post_id 字段或 wp_links 表的link_id 字段。


term_taxonomy_id:链接到wp_term_taxonomy 表的相同字段


term_order:排序



总得感觉就是:都拧成麻花了……


之所以没有【分类与分类方法之间的对应关系表】,是因为使用了【冗余设计】,分类与分类方法本来是多对一,却使用了一对一,也就是说每个分类信息中都包含了其分类方法的完整信息。更让人感觉离谱的是:都冗余设计了,干嘛还分拆成两个表?


还有个让人困惑的地方,wp_term_relationships 中对应的不是 term_id 而是 term_taxonomy_id……



让我们试着调整一下表结构。


wp_terms


term_id:分类ID


name:分类名


slug:缩略名


taxonomy:分类方法(category/post_tag)


description:描述


parent:所属父分类方法ID


count:文章数统计


term_group:未知


wp_term_relationships


object_id:链接到wp_posts 表的 post_id 字段或 wp_links 表的link_id 字段。


term_id:链接到wp_term 表的相同字段


term_order:排序



是不是清楚多了……



WordPress为什么设计成那个样子,肯定是有原因的,历史包袱还是什么高级的优化?


哪位高手给指点一下。


发表评论

暂无评论,抢个沙发...

客服 工单