当前类别下具有缩进子列表的类别列表

时间:2017-03-03 作者:soomro

我正在尝试创建一个小部件来显示自定义分类法中包含项目的所有顶级类别。如果单击其中一个类别,您将转到该页面,当前类别在侧边小部件中以粗体显示。我通过使用wp_list_categories() 以及设计班级风格.current-cat.

我现在想做的是显示当前类别的子级,缩进到当前粗体类别下面,如下所示:

enter image description here

我该怎么做呢?我还能用吗wp_list_categories().

我当前用于该函数的参数是

$args = array(
    "taxonomy" => "kategori",
    "title_li" => "",
    "orderby" => "name",
    "order" => "ASC",
    "parent"  => 0
);

1 个回复
最合适的回答,由SO网友:LWS-Mo 整理而成

我认为你应该能够用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