2016-07-14 125 views
-6

我有一个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 
+0

你能发表表格的结构吗? – Philipp

+2

***为什么*** SQL而不是本机Wordpress –

+2

有很多理由使用SQL而不是wordpress。也许这是一个不同的技术,正在寻找使用WordPress的数据,也许它是为了迁移的目的,YADDA YADDA。 –

回答

0

工作,这是最终为我工作:

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 
0

在看着/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

5
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 可能它会为你

相关问题