使用 Wp-Posts 和 Wp-Terms 查询 Wordpress 帖子

Query Wordpress Posts Using Wp-Posts and Wp-Terms

我正在尝试查询我的 Wordpress 站点中具有 wp_terms.slug = 'portfolio-photos' 的所有帖子。我使用 wp_terms、wp_term_taxonomy、wp_term_relationships 和 wp_posts 连接了表格。我不确定我的 SQL 代码有什么问题。有人可以告诉我我的 code/train 想法有什么问题吗?

我收到 0 行,但是,应该有 12 行,因为那是我在 WP 中有多少行 "portfolio-photos" slug。 headers 列是 ID、term_id 和 slug。

SELECT wp_posts.ID, wp_terms.term_id, wp_terms.slug
FROM wp_posts
LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
LEFT JOIN wp_term_taxonomy ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id)
LEFT JOIN wp_terms ON (wp_term_taxonomy.term_taxonomy_id = wp_terms.term_id)
WHERE wp_terms.slug = 'portfolio-photos'

table wp_terms 不在您的 FROM 子句中,您必须关联它才能在 WHERE 子句中使用它。

编辑:原来的 post 在我原来的回答后被更改了。

在仔细查看 WP DB 中的表之间的关系后,我意识到我的代码是正确的。这 article 真的很有帮助。我试图使用与父类别对应的 slug 来提取结果。

因此,我上面的原始代码仅适用于子类别。下面的代码通过使用 WHERE wp_term_taxonomy.parent = '11'

提取正确数量的结果
SELECT wp_posts.ID, wp_terms.term_id, wp_term_taxonomy.parent, wp_terms.slug
FROM wp_posts
LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
LEFT JOIN wp_term_taxonomy ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id)
LEFT JOIN wp_terms ON (wp_term_taxonomy.term_taxonomy_id = wp_terms.term_id)
WHERE wp_term_taxonomy.parent = '11'