2013-03-12 81 views
0

我使用Wordpress創建自定義頁面,並且需要將我的查詢結果劃分爲基於標籤的列表。我知道有一個WordPress的堆棧交換,但這對我來說似乎更像是一個基本的PHP函數。我在Wordpress堆棧上發現的唯一一件事就是根據標籤名稱執行新的查詢。根據字段將查詢結果劃分爲列表

必須有一個更有效的方式......

我是新來的PHP。讓事情進一步複雜化,我一直在努力應對循環,但我越來越多地抓住這個概念。

這裏是我期待實現的邏輯:

查詢數據庫,並獲得了標有「紅,綠,藍,黃」的帖子的「稱號」。這部分我可以用WP_Query()功能做,這裏沒有問題...麻煩是下一部分。

遍歷查詢和輸出:

<ul id="red"> 
<li>Output title of first post tagged with Red</li> 
<li>Output title of second post tagged with Red</li> 
<li>Output title of third post tagged with Red</li> 
<!--[etc...]--> 
</ul> 
<ul id="green"> 
<li>Output title of first post tagged with Greeen</li> 
<li>Output title of second post tagged with Green</li> 
<li>Output title of third post tagged with Green</li> 
<!--[etc...]--> 
</ul> 
<!--[continue for other colors requested in the query]--> 

結束循環

據我所知,將在未來的結果和輸出迭代的所有記錄標題的第一個循環,我只是困惑關於如何循環結果並進一步劃分顏色。

任何幫助,非常感謝。

+0

重複? http://stackoverflow.com/questions/9354684/how-to-split-an-array-based-on-a-certain-value – christopher 2013-03-12 17:15:14

+0

你可以共享包含數據的對象/數組的var_dump嗎? – mkaatman 2013-03-12 17:19:48

回答

0

首先,你可以從數據庫得到的結果進行排序,只需添加一個

ORDER BY `color` // for MySql at least 

如果你正在尋找做這一切在一個循環的代碼會變得有點凌亂。您必須存儲最後一種顏色,並在每次顏色更改時終止並啓動一個新的元素ul

另一個(更好的IMO)選項是將你的元素分類到循環中的數組中,然後在循環之後,適當地回顯每個數組的內容。

$colors = array(); 
while($row = ..FETCH_MORE_DATA_FROM_DB...){ 
    if (!is_array($colors[$row['color']])){ 
    $colors[$row['color']] = array(); 
    } 
    $colors[$row['color']][] = "<li>{$row['title}</li>"; 
} 

foreach($colors AS $colorName => $elements){ 
    echo '<ul id="'. $colorName .'">'; 
    foreach($elements AS $element){ 
    echo $element; 
    } 
    echo '</ul>'; 
} 
相關問題