2010-04-05 83 views
1

您好我正在尋找相應地獲得所有(父)類別與子女(假設你沒有孫子),然後進行以下結構WordPress的類別和其子

<div class="box"> 
    <h3><a href="#">Parent Category I</a></h3> 
    <ul> 
     <li><a href="#">sub cat 1</a></li> 
     <li><a href="#">sub cat 2</a></li> 
     <li><a href="#">sub cat 3</a></li> 
    </ul> 
    </div> 
    <div class="box"> 
    <h3><a href="#">Parent Category II</a></h3> 
    <ul> 
     <li><a href="#">sub cat 1</a></li> 
     <li><a href="#">sub cat 2<</a></li> 
     <li><a href="#">sub cat 3</a></li> 
    </ul> 
    </div> 

我想這件事情喜歡(不介意的語法),但是我不知道如何獲得這些(父)類別和他們的孩子:

$parents = ... ; 

foreach($parents as $parent){ 
<div> 
<h3>$parent</h3> 

$children = ...; 
<ul> 
foreach ($children as $child){ 
<li>$child</li> 
} 
</ul> 

</div> 

} 

回答

0

好,我理解了它自己無論如何感謝尼&羅布

我basicly了2個功能

function getParentCategories() { 
    global $wpdb; 
    $sql = "SELECT term_id as id, name, slug FROM wp_terms where term_id in (SELECT term_id FROM wp_term_taxonomy where parent = 0 and taxonomy = 'category') order by name asc"; 
    $parents = $wpdb->get_results($sql); 
    return $parents; 
} 

function getChildCategories($id) { 
     global $wpdb; 
     $sql = "SELECT term_id as id, name, slug FROM wp_terms where term_id in (SELECT term_id FROM wp_term_taxonomy where parent = $id and taxonomy = 'category') order by name asc"; 
     $children = $wpdb->get_results($sql); 
     return $children; 
    } 
0

我與get_categories()wp_list_categories()(函數開始,雖然它可能不會完美滿足您的需求,非常靈活),並猜測你必須使用一個for循環來通過父類別的嵌套循環來處理子代(就像你的僞代碼所暗示的那樣)。特別是對於wp_list_categories(),您可能無法獲得所需的確切結構,但至少可以合理設計樣式。

0

作爲benny發佈的內容,wp_list_categories將是您使用的最佳功能。

也許您應該重新考慮html結構,因爲wordpress格式您的類別列表的方式是在一個無序的列表中,這是因爲如果您的樣式無法加載它以自然格式呈現。但是,您可以通過將'hierarchical'的值更改爲false來更改此行爲。

希望這有助於:)