如何查询自定义WordPress类别中的所有帖子
问题描述:
我有一个WordPress数据库,需要使用纯MySQL进行查询才能从名为'guide_category'的自定义分类中选择所有帖子。我也想按照wp_terms.name
的顺序排列结果,并在wp_posts.name
的顺序内排列结果。帖子可以驻留在多个类别中。如何查询自定义WordPress类别中的所有帖子
所以结果应该看起来像:
Category_A
Post A
Post B
Post C
Category_B
Post A
Post B
Post C
Category_C
Post A
Post B
Post C
答
工作,这是最终为我工作:
SELECT name, post_title
FROM wp_term_taxonomy AS cat_term_taxonomy
INNER JOIN wp_terms AS cat_terms ON cat_term_taxonomy.term_id = cat_terms.term_id
INNER JOIN wp_term_relationships AS cat_term_relationships ON cat_term_taxonomy.term_taxonomy_id = cat_term_relationships.term_taxonomy_id
INNER JOIN wp_posts AS cat_posts ON cat_term_relationships.object_id = cat_posts.ID
INNER JOIN wp_postmeta AS meta ON cat_posts.ID = meta.post_id
WHERE cat_posts.post_status = 'publish'
AND cat_term_taxonomy.taxonomy = 'guide_category'
GROUP BY name, post_title
ORDER BY name, post_title
答
在看着/wp-includes/taxonomy.php的WP_Tax_Query类,我发现有一个“include_children”选项,默认为true。我修改了原来的get_posts()与下面的调用,并且它的伟大工程:更多的查询参数
$pages = get_posts(array(
'post_type' => 'post'
'tax_query' => array(
array(
'taxonomy' => 'taxonomy-name'
)
)
));
列表:http://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters
+0
我正在寻找一个纯粹的MySQL答案...不是PHP/WordPress。 – bigmike7801
答
global $wpdb;
$query = "
SELECT * FROM $wpdb->posts
LEFT JOIN $wpdb->term_relationships ON
($wpdb->posts.ID = $wpdb->term_relationships.object_id)
LEFT JOIN $wpdb->term_taxonomy ON
($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
WHERE $wpdb->posts.post_status = 'publish'
AND $wpdb->term_taxonomy.taxonomy = 'category'
AND $wpdb->term_taxonomy.term_id = 1
ORDER BY post_date DESC
";
$results = $wpdb->get_results($query);
更换term_taxonomy.term_id = 1与texonomy ID 可能它会为你
你能发表表格的结构吗? – Philipp
***为什么*** SQL而不是本机Wordpress –
有很多理由使用SQL而不是wordpress。也许这是一个不同的技术,正在寻找使用WordPress的数据,也许它是为了迁移的目的,YADDA YADDA。 –