2012-06-17 27 views
21

我正在開發一個wordpress插件。我使用兩種不同的自定義帖子類型,玩家WordPress的 - 基於元領域的內容獲取帖子

  • 玩家具有相關元字段:名字,姓氏,和團隊。
  • 團隊具有團隊名稱的相關元字段。

在編輯特定後,我想擁有的一切球員,目前有球隊的名字貼到他們的元領域的隊名的數組。我不知道如何做到這一點。任何幫助或文章都會很有幫助。謝謝

回答

22

重要的是,您至少使用帖子類型,元鍵和元值三個標準來查詢帖子。

例如,假設您的自定義後類型就被稱爲「運動員」而且,每個「播放器」後附加有元場名爲「player_team」

然後,您可以查詢使用像這樣的職位:

$teamname = ""; // the player's team that you're querying for 

$myquery = new WP_Query("post_type=player&meta_key=player_team&meta_value=$teamname&order=ASC"); 
+2

由於這是球隊頁面內輔助查詢,建議使用'WP_Query'或'get_posts',而不是'query_posts' - 參見[食品](HTTP://抄本。 wordpress.org/Template_Tags/query_posts#Secondary_Loops) – Hobo

+3

已更新的答案以反映 –

+1

+1。很好,謝謝。順便說一下(對不起,我以前沒有注意到這一點) - 可能值得添加-1的posts_per_page參數,以確保您獲得所有玩家(或者注意到,無論如何,因此提問者意識到這種可能性) 。 – Hobo

44

或者使用get_posts

$args = array(
    'meta_key' => 'player_team', 
    'meta_value' => $teamname, 
    'post_type' => 'player', 
    'post_status' => 'any', 
    'posts_per_page' => -1 
); 
$posts = get_posts($args); 

使用meta_query另一個等效的查詢,而不是meta_keymeta_value

$args = array(
    'meta_query' => array(
     array(
      'key' => 'player_team', 
      'value' => $teamname 
     ) 
    ), 
    'post_type' => 'player', 
    'posts_per_page' => -1 
); 
$posts = get_posts($args); 
+7

如果您設置''posts_per_page'=> -1'來檢索所有匹配的帖子,則不需要'999999'。 – cfx

+7

或設置'nopaging => true'。 –

+1

@vortexs感謝「post_status」建議! – colllin