我认为你应该能够用wp_list_categories()
还有一点自定义CSS。
我使用默认的WP类别和自定义分类法对此进行了测试。
首先,移除"parent" => 0
从您的wp_list_categories()
作用我不知道你是从哪里弄来的。
而且一定要包一些<ul>
围绕列表函数。wp_list_categories()
似乎产生<li>
只有包装纸,但没有包装纸。
我测试了此代码:
$args = array(
\'taxonomy\' => \'kategori\',
\'title_li\' => \'\',
\'orderby\' => \'name\',
\'order\' => \'ASC\',
);
echo \'<ul class="category-list">\';
wp_list_categories( $args );
echo \'</ul>\';
这样,您就可以看到所有类别的缩进层次列表。(好的,是的,它还取决于你的主题CSS,如果孩子们将缩进或不)
现在,如果某个类别处于活动状态(意味着,如果您当前在类别页面上),则该类别的单个列表项将具有特殊类,.current-cat
.
使用该类,您可以简单地隐藏和显示缩进的子项(类的ul元素.children
) 像这样:
/* hide all sub menus */
.category-list ul.children {display:none;}
/* only show sub menus on the current cat */
.category-list .current-cat ul.children {display:block;}
<小时>
Update:刚刚用自定义分类法对此进行了测试,它可以正常工作。编辑了上述答案。
还要确保有些帖子实际上添加了一些自定义分类术语。当您只有一些空的分类术语时,将不会显示任何内容。
<小时>Update:如果你在一个分类子页面上,我们也可以使用一些CSS。
中的父菜单项wp_list_categories()
如果您正在查看子级,则获取一个特殊类,.current-cat-parent
.
所以你可以
.category-list .current-cat-parent ul.children {display:block;}
或完整片段
.category-list .current-cat ul.children,
.category-list .current-cat-parent ul.children {display:block;}
但是,如果您使用的是单个post视图,则此解决方案会遇到另一个限制,
wp_list_categories()
将折叠,因为不会生成特殊类(因为您不在类别视图中)。
也许post类可以在这里帮助您,因为它们根据当前的分类法/术语生成一些自定义类,如<taxonomyslug>-<termslug>
并将这些类添加到当前.post
要素
例如:
kategori-kategoriterm