2013-02-27 78 views
8

我使用这段代码:的WordPress:只显示顶级类别

$args = array(
    'orderby' => 'name', 
    'hierarchical' => 1, 
    'style' => 'none', 
    'taxonomy' => 'category', 
    'hide_empty' => 0, 
    'depth' => 1, 
    'title_li' => '' 
); 

$categories = get_categories($args); 

我所试图做的是只列出顶级类别。当我使用这个代码时,我将它们全部放在第一层。有人能帮我吗?

+1

没有为get_categories没有深度参数()-http://codex.wordpress.org/Function_Reference/get_categories深度参数在wp_list_categories()中使用 - http://codex.wordpress.org/Template_Tags/wp_list_categories – McNab 2013-02-27 13:30:01

回答

22

没有depth论据get_categories(),你应该尝试:

$args = array(
    'orderby' => 'name', 
    'parent' => 0 
); 

parent: (整数)仅显示直接后裔类别(即儿童专用)查明的类别它的ID。这不适用于'child_of'参数。此参数没有默认值。 [在2.​​8.4]

了解更多:http://codex.wordpress.org/Function_Reference/get_categories#Get_only_top_level_categories

+0

如何仅显示一个级别的子类别? 例如:我想隐藏一级子类别的子类别 – 2014-08-12 13:00:14

+0

感谢烧酒,它的帮助很大:) – Max 2016-04-25 14:42:48

2

烧酒职位是非常有帮助的,对于只得到1类一级子类别,我们应该只通过有子类别的类别ID。但是,如果子类没有任何职位则亘古不显示,但子类别的子类别包括后这么加“hide_empty” => 0,在上述条件下它看起来就像

$args = array(
'taxonomy' => 'categories', 
'parent' => 7, 
'hide_empty' => 0, 
); 
0

这里是我的脚本来获得最高级别循环中的类别名称。这将包括只检查了一个子类别的顶级类别,并且没有明确检查它们自己。

<?php 
    $categories = get_the_category(); 
    $topcats = array(); 
    foreach ($categories as $cat) { 
     if ($cat->parent != 0) $cat = get_term($cat->parent, 'category'); 
     $topcats[$cat->term_id] = '<a href="/category/' . $cat->slug . '">' . $cat->name . '</a>'; 
    } 
    echo implode(', ', $topcats); 
?>