2009-06-18 26 views
7

我試圖做的是有一個頁面在六個列表,每個列表顯示來自不同類別的職位WordPress站點的列表。簡單。WordPress的 - 生產由標籤,然後類別進行篩選的帖子

不過,如果用戶選擇一個標籤,帶他們到該標籤頁面的存檔,我希望他們仍然可以看到六列表模板,但每個類別中所有的職位也由標籤過濾。因此,帖子列表首先按標籤過濾,然後按類別過濾。

據我所知,沒有這樣做使用query_posts或任何方式,它需要更多的先進使用的數據庫,但我不知道如何做到這一點!我認爲這裏有一個類似的問題,但是因爲我知道很少的PHP和沒有MySQL,所以我無法理解答案!

回答

5

好吧,我終於找到了一個相對簡單的解決這個。

在WordPress中有一個錯誤,防止類別和標籤的查詢工作,所以query_posts('cat=2&tag=bread');將無法​​正常工作,但解決方法是query_posts('cat=2&tag=bread+tag=bread');這是神奇的作品。

在tag.php模板,我希望它拿起從存檔的標籤,所以我不得不這樣做:

<?php query_posts('cat=12&tag='.$_GET['tag'].'+'.$_GET['tag']); ?> 

它完美的作品。

0

the Wordpress API,您可以通過標籤來query_posts在一個呼叫中進行篩選。

例子:

query_posts('tag=cooking'); 

query_posts('tag=bread,baking'); 

query_posts('tag=bread+baking+recipe'); 
+0

不幸的是這個查詢將覆蓋一個類別,你不能用它來按類別標籤內的過濾,則只會顯示所有與該類別的職位,該標籤內的所有職位。 – 2009-06-19 07:09:27

+0

您可以最初調用get_query獲取按標籤過濾的帖子數組。然後遍歷它並手動爲這六個類別中的每一個分配帖子到一個數組中。 – 2009-06-19 07:33:15

2

試試這個代碼:

query_posts('tag=selected_tag'); 

while (have_posts()) : the_post(); 


    foreach((get_the_category()) as $category) 
     { 

     if ($category->cat_name == 'selected_category') 
      { 
      // output any needed post info, for example: 
      echo the_title(); 
      } 

     } 


endwhile; 
相關問題