2016-11-21 195 views
2

我試圖讓一個給定類別的子類別,像這樣:get_terms函數返回所有子類未返回所有結果

$this->getChildCategories = function($parent_id) {       

     $args = array(
      'parent'   => $parent_id,     
     ); 

     $terms = get_terms('category', $args); 

     return $terms; 

}; 

當具有在儀表盤一看,總共有10個類。但該函數只返回5個結果。

+3

也許其他五個都沒有帖子試試'hide_empty =>假,'讓條款 –

+0

@ShravanShrama奏效!謝謝! – Tiwaz89

+0

永遠歡迎.. –

回答

0

你需要禁用默認的限制:

'numberposts' => -1, 
+0

這似乎並沒有這樣做... – Tiwaz89

1

你似乎在呼籲以錯誤的方式的功能。如果您在documentation指的功能,這裏是它是如何叫:

get_term_children($term, $taxonomy); 

因此要求獲得孩子們一個類別的類別,這裏就是我們必須做的:

get_term_children($term, $taxonomy ); //where $term is "category_id" and $taxonomy is "category" 

既然你塞不父類的id,你可以通過這個function獲得ID:

$parent_category = get_category_by_slug('category-slug'); 
$parent_category_id = $parent_category->term_id; 

使用上述功能來寫我們自己的函數來獲得孩子catego阿爾·里斯:

function get_children_categories($category_slug, $taxonomy_name){ 
    $parent_category = get_category_by_slug($category_slug); 
    $parent_category_id = $parent_category->term_id; 
    //$Uncategorized_id = get_cat_ID('Uncategorized') ; 
    $children_categories = get_term_children($parent_category_id, $taxonomy_name); 
    //unset($children_categories[$Uncategorized_id]); 
    return $children_categories; 
} 

上述功能也返回「未分類」,所以要刪除您可以取消在上面的功能註釋的部分。

你可以通過參數調用函數get_children_categories:

get_children_categories('event', 'category') //shall return all the children category ids. 

現在,你必須全部通過品類的兒童類別ID。要獲得術語對象,可以使用以下功能:

get_term_by($field, $value, $taxonomy, $output, $filter) 

謝謝。 P:從刪除最後一個問題開始,我不得不親自搜索你。然而這是你最後一個問題的答案。

0

您可以通過父類ID,而不是$cat->cat_ID.

$categories=get_categories(
    array('parent' => $cat->cat_ID) 
);