2012-10-16 33 views
1

有沒有人看到過wordpress的插件,它提供了一個按字母順序排列的索引類別,可以將您帶到屬於特定字母的類別頁面。基本上,有一個列表:你可以點擊A B C D ... X Y Z,當你點擊A時,你會進入一個頁面,你可以看到所有以字母A開頭的類別?A-Z Wordpress類別索引

我已經搜索了一個多小時,找不到這個...我開始搞亂了MySQL做這個SELECT term_id as id, name as post_title FROM wp_terms ORDER BY name,但這也包括類別中的標籤,我只是想抓住類別。

更新:

好了,所以它看起來像我可以通過這樣的搶剛剛從wp_term_taxonomy類別:

SELECT term_taxonomy_id FROM wp_term_taxonomy WHERE taxonomy = 'category' 

然後,我可以採取的陣列,在這裏運行它:

SELECT term_id, name FROM wp_terms WHERE term_id IN (that-array) ORDER BY name 

那是怎麼回事?如何使用上面的內容創建新表格?

回答

0

您可以使用此功能,並通過一個字母作爲參數

function get_category_by_letter($letter){ 
    $args=array(
    'orderby' => 'name', 
    'order' => 'ASC', 
    'hide_empty' => 0); 

    $categories=get_categories($args); 
    foreach($categories as $category) { 

    $catname = $category->name; 
    $first_letter = substr(strip_tags($catname), 0 , 1); // get the first letter of the category 
    if(strcasecmp($first_letter,$letter) != 0) continue; //if not the same letter then loop next NOTE: this is case insensitive comparison 
    else{ 
     $cats[] = $category->term_id; //store category IDs in array 
     //$cats[] = $category->name; uncomment this if you want to get category name 
     //or you can start your process here and remove the return value 
     } 
    } 
return $cats; 
} 

用法示例

$cats = get_category_by_letter('A'); 
    var_dump($cats); 
+0

我已更新它來處理不區分大小寫的比較信件的條件 – loQ

+0

感謝您的答覆。有一件事讓我擔心這種做法,因爲你基本上是檢索所有類別並對傳遞的信件進行循環。我將會有很多類別,比如1000,特別是因爲標籤在get_categories中被歸類爲類別,所以希望採用不同的方法。無論如何,我可以做一個單獨的MySQL表,只是存儲每個字母或類別的類別... – iwek

0

您可以使用瞬態API用於緩存SQL查詢。

+0

我不關注,爲什麼我想要過期時間的附加功能。我正在尋找生成一個類別(不是標籤)的字母表字母表。您點擊A並查看所有以A開頭的類別。瞬態API如何連接? – iwek