使用此查询检索具有特定post_type
SELECT *
FROM wp_posts
WHERE post_type = \'product\';
如上所述
here 类别不在
wp_posts
表但术语表
wp_terms
wp_term_relationships
wp_term_taxonomy
在所有表格中搜索我脑海中的一个类别,我能找到的唯一一个类别实例是wp_terms
包含以下列的表
在其他表格中寻找与此相关的交叉引用,并以某种方式将其与wp\\U帖子联系起来,这带来了一些复杂性。
我的想法是term_id
我应该寻找外键,但唯一的例子是wp_term_taxonomy
, 我能在表格中找到的唯一与我的类别相关的信息(或者更确切地说term_id
) 是
因此,我能从中获得的唯一信息是让我知道term_id
taxonomy
是一个product_cat
并且在count
告诉我这个特定类别有多少帖子。
了解一点MySQL,我知道如果有希望这样做,我需要修改我的查询并执行JOIN
或者两个。
但我只能找到非常有限的信息,确切地说我能抓住什么。
以下是wp_posts
`wp_posts` (
`ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`post_author` bigint(20) unsigned NOT NULL DEFAULT \'0\',
`post_date` datetime NOT NULL DEFAULT \'0000-00-00 00:00:00\',
`post_date_gmt` datetime NOT NULL DEFAULT \'0000-00-00 00:00:00\',
`post_content` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL,
`post_title` text COLLATE utf8mb4_unicode_520_ci NOT NULL,
`post_excerpt` text COLLATE utf8mb4_unicode_520_ci NOT NULL,
`post_status` varchar(20) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT \'publish\',
`comment_status` varchar(20) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT \'open\',
`ping_status` varchar(20) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT \'open\',
`post_password` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT \'\',
`post_name` varchar(200) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT \'\',
`to_ping` text COLLATE utf8mb4_unicode_520_ci NOT NULL,
`pinged` text COLLATE utf8mb4_unicode_520_ci NOT NULL,
`post_modified` datetime NOT NULL DEFAULT \'0000-00-00 00:00:00\',
`post_modified_gmt` datetime NOT NULL DEFAULT \'0000-00-00 00:00:00\',
`post_content_filtered` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL,
`post_parent` bigint(20) unsigned NOT NULL DEFAULT \'0\',
`guid` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT \'\',
`menu_order` int(11) NOT NULL DEFAULT \'0\',
`post_type` varchar(20) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT \'post\',
`post_mime_type` varchar(100) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT \'\',
`comment_count` bigint(20) NOT NULL DEFAULT \'0\',
PRIMARY KEY (`ID`),
KEY `post_name` (`post_name`(191)),
KEY `type_status_date` (`post_type`,`post_status`,`post_date`,`ID`),
KEY `post_parent` (`post_parent`),
KEY `post_author` (`post_author`)
)
是否可以将我的查询修改为仅检索
wp_posts
特定类别的表行?
最合适的回答,由SO网友:bbruman 整理而成
找到了答案@如果您希望在WordPress中实现这一点,belinus可能是您的解决方案。
至于您可以使用的原始SQL查询,我找到了这个查询,对它进行了一点修改,它返回特定类别的所有产品。
执行此操作需要三个表wp_posts
wp_term_relationships
和wp_term_taxonomy
SELECT *
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)
WHERE wp_term_taxonomy.term_id IN (307)
GROUP BY wp_posts.ID
只需更换
307
使用
term_id
您希望获得结果的类别。您可以通过在
wp_terms
name
列,它将返回关联的术语id。
如果愿意,也可以返回多个类别,只需在WHERE
例如,子句WHERE wp_term_taxonomy.term_id IN (307, 450, 200, 99)
.