2011-02-13 180 views
0

根據WordPress Codex,get_post_types()函數具有「分類法」參數,但沒有解釋其工作原理。Wordpress-獲取與自定義分類相關聯的自定義帖子類型

$post_args = array(
      'public' => true, 
      'taxonomies' => 'genre', 
      'show_ui' => true 
      ); 

$post_types = get_post_types($post_args); 

即使流派是註冊到「書籍」帖子類型的分類法,上述代碼也不會返回任何內容。

如果我有一些自定義帖子類型的'書籍'與一些自定義分類法,說'作家'和'流派'...我想用get_post_type()返回與'流派'相關的帖子類型。顯然是'書'。我正在嘗試做一些有助於設置get_posts()post_type參數的內容,因爲它僅默認搜索帖子,而不是自定義帖子類型。很明顯,我可以設置post_type參數,但我希望將它與未來可能在我的不同主題中使用的任何後期類型兼容。

回答

0

可能希望使用兩者的組合:get_posts(),然後傳入您的post_type。像下面的東西可能會幫助你開始。

$post_types = get_post_types(); 
    if (is_category() || is_tag()) { 

     $post_type = get_query_var('article'); 

     if ($post_type) 
      $post_type = $post_type; 
     else 
      $post_type = $post_types; 

     $query->set('post_type', $post_type); 

    return $query; 
    } 
} 

你不希望使用is_category和is_tag,你會使用像is_in_taxonomy()。你究竟想要做什麼?我認爲你正在嘗試做與我一樣的事情...

對於自定義帖子類型的歸檔頁面對於某些自定義帖子類型的所有分類使用自定義循環。像下面這樣:

taxonomy-[MY-CPT].php 

taxonomy-[MY-CUSTOM-TAXONOMY].php 

實際上,我試圖做同樣的,因爲我們說話,我會讓你知道我想出。

注意,我只是做了is_in_taxonomy()

5

雖然我有點遲到了在這一個:

taxonomies不是get_post_types()一個有效參數,所以它充其量將簡單地忽略參數並返回所有註冊的帖子類型的列表。

可能是你最好的選擇是get_taxonomy()對象:

$currentTaxonomy = get_query_var('taxonomy'); 

// Or: $currentTaxonomy = 'genre'; 

if ($currentTaxonomy) { 
    $taxObject = get_taxonomy($currentTaxonomy); 
    $postTypeArray = $taxObject->object_type; 
} 

這會給你這種分類註冊到所有崗位類型的數組。

+0

很酷。我真的不知道我甚至想在這裏做什麼,但你永遠不知道誰會在未來找到這個職位。幾年後我搜索了一些東西,最終找到了我自己的帖子! – helgatheviking

+0

@helgatheviking我完全一樣,所以這也是我自己的參考。我甚至用Google搜索了一個問題,最後在我自己的博客文章中發佈了。所有這些都表明互聯網陰險的陰謀扼殺了我的短期記憶。害你無辜。 – indextwo

+0

短期記憶?那是什麼?正如我所說的,我不知道我最初想做什麼,但這確實回答了標題中所說的問題。 – helgatheviking

相關問題