以下是一个 SQL 查询,用于在 WordPress 数据库中找出已发布文档对应的分类:
SELECT
p.post_title AS post_title,
t.name AS category_name
FROM
wp_posts p
JOIN
wp_term_relationships tr ON p.ID = tr.object_id
JOIN
wp_term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
JOIN
wp_terms t ON tt.term_id = t.term_id
WHERE
p.post_status = 'publish'
AND tt.taxonomy = 'category';
代码解释:
SELECT p.post_title AS post_title, t.name AS category_name
:从结果中选择文章的标题(post_title
)和分类的名称(category_name
),并为它们分别取别名。
FROM wp_posts p
:从 wp_posts
表开始查询,将该表别名为 p
。
JOIN wp_term_relationships tr ON p.ID = tr.object_id
:通过 wp_term_relationships
表(别名为 tr
)将文章和分类关联起来,依据是文章的 ID
与 wp_term_relationships
表中的 object_id
相等。
JOIN wp_term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
:再通过 wp_term_taxonomy
表(别名为 tt
),将 wp_term_relationships
表中的 term_taxonomy_id
与 wp_term_taxonomy
表中的 term_taxonomy_id
进行关联。
JOIN wp_terms t ON tt.term_id = t.term_id
:最后,通过 wp_terms
表(别名为 t
)将 wp_term_taxonomy
表中的 term_id
与 wp_terms
表中的 term_id
进行关联,以获取分类的名称。
WHERE p.post_status = 'publish' AND tt.taxonomy = 'category'
:筛选条件,只选取已发布(post_status
为 publish
)的文章,并且仅考虑分类类型为 category
的分类法。
此查询的整体逻辑是,先从 wp_posts
表中选取已发布的文章,然后通过关联表逐步找到这些文章所对应的分类,最终输出文章的标题和所属分类的名称。这样可以清晰地看到已发布的文章和它们所属的分类之间的对应关系。
请注意,在使用上述 SQL 语句之前,请确保你的 WordPress 数据库表前缀是 wp_
,如果你的数据库表前缀不同,请将 wp_
修改为你实际使用的前缀。同时,不同的 WordPress 版本可能在表结构上有细微的差异,在使用此查询时,请确保表结构符合你使用的版本。