2010-04-15 250 views
4

此代碼獲取鏈接到term_name的所有類型的10個帖子;自定義分類和自定義帖子類型的Wordpress,WP_Query

global $wp_query; 
query_posts(array( 
    "taxonomy_name" => "term_name", 
    'showposts' => 10) 
); 

此代碼獲得10個自定義帖子類型「消息」的帖子;

global $wp_query; 
query_posts(array( 
    'post_type' => 'message' 
    'showposts' => 10) 
); 

但是,此代碼始終忽略post_type要求,但仍選擇鏈接到term_name的所有帖子類型;

global $wp_query; 
query_posts(array( 
    'post_type' => 'message' , 
    "taxonomy_name" => "term_name", 
    'showposts' => 10) 
); 

我看不出兩個人都可以單獨工作,但他們一起工作,除非它可能是一個錯誤 - 任何想法?

+0

當你說它不起作用時會發生什麼?你會得到錯誤,查詢什麼也沒有返回,還有什麼? – Manzabar 2010-04-15 16:01:30

+0

「但是,此代碼始終忽略post_type要求,但仍選擇鏈接到term_name的所有帖子類型;」 - 我獲得了與該分類術語相關的所有文章類型,而不僅僅是指定的消息。即最後一塊代碼的行爲與第一塊相同。 – Chris 2010-04-15 16:07:23

回答

5

看起來像一個錯誤。你有沒有試過custom select query?這應該這樣做:

$querystr = " 
    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) 
    LEFT JOIN $wpdb->terms ON($wpdb->term_taxonomy.term_id = $wpdb->terms.term_id) 
    WHERE $wpdb->posts.post_type = 'message' 
    AND $wpdb->posts.post_status = 'publish' 
    AND $wpdb->term_taxonomy.taxonomy = 'taxonomy_name' 
    AND $wpdb->terms.slug = 'term_name' 
    ORDER BY $wpdb->posts.post_date DESC 
    LIMIT 10 
    "; 

$pageposts = $wpdb->get_results($querystr, OBJECT); 

我用this answer在構建查詢。

+0

是且已提交 - http://core.trac.wordpress.org/ticket/13020。 修復只是將query.php文件的一行更改爲if語句,以檢查post_type是否爲空。 – Chris 2010-04-16 04:09:24

1

已提交 - core.trac.wordpress.org/ticket/13020。 Fix只是將query.php文件的一行更改爲if語句,以檢查post_type是否爲空。

0

使用'category_name'替代'taxonomy_name'。 Works on WP 3.5.2

query_posts(array( 
    'post_type' => 'message', 
    'category_name' => 'term_name', 
    'showposts' => '10') 
); 
相關問題