由于这是对设计更深入理解的一部分,我将从整体上描述它……:)
WP 4.5.3中仍然有所有这些表格(我将讨论它们,不带前缀):
post术语关系分类法获取post术语可读名称的路径贯穿于所有术语。
posts<这里的主要标识是ID
- 帖子的id(任何类型)
term_relationships
存储成对的:
object_id
- 可以posts.ID
(但不一定是)
term_taxonomy_id
- 这是NOT 术语(类别)的id,但id of RELATIONSHIP 双方;术语(类别)和分类(“类别类型”)
term_taxonomy<这里的主要标识是term_taxonomy_id
上面写的是另一个重要的栏目:
term_id
- an id of a term (类别)
taxonomy
- 存储术语的分类(“类别类型”)
这可能看起来很有趣,但最初的目的是增加术语具有更多分类的能力(这在某些情况下是有意义的)。
terms<这里的主要标识是term_id
- 类别的id这里的另一个重要列是:
name
- 可读类别名称,例如“音乐流派”
slug
- 一个可用的术语的首字母,例如在URL中
因此,演示SQL以获取所有已发布的帖子及其带有类别名称的所有类别的过程可能如下所示(在您自己的WP DB上测试时,向表中添加前缀):
SELECT * FROM
posts #gets posts
LEFT JOIN
term_relationships #gets posts relationships to term_taxonomies
ON(posts.ID=term_relationships.object_id)
LEFT JOIN
term_taxonomy #gets term_ids
ON(term_relationships.term_taxonomy_id=term_taxonomy.term_taxonomy_id)
LEFT JOIN
terms #finally, gets terms\' names
ON(term_taxonomy.term_id=terms.term_id)
WHERE (
(posts.post_status=\'publish\')
#optionally you can filter by a certain post_type:
#AND
#(posts.post_type=\'some_post_type\')
)
ORDER BY posts.ID ASC