我正在使用WordPress。
有多个类别及其子类别。在一般页面中,我显示所有第一级别的类别。这是我的代码:
$args = array(
'type' => 'product-items',
'child_of' => 0,
'parent' => '',
'order' => 'DESC',
'hide_empty' => 0,
'hierarchical' => 1,
'exclude' => '',
'include' => '',
'number' => '',
'taxonomy' => 'product-category',
'pad_counts' => false,
'depth' => 1,
'title_li' => ''
);
wp_list_categories($args);
点击并进入第一级别类别后,您只需要在其中查看其子类别。当我删除'depth' => 1,
选项时,所有子项都显示在其父类别下,但对于页面速度/加载,在子页面中我需要显示所有第一级类别,但只显示当前类别的子类。
例如,我有以下3个类别:
想象一下,我点击“类别1”。现在就是这样:
但是我需要在子页面中像这样:
不确定如何使用wp_list_categories()
函数实现此目的。有什么想法吗?
答案 0 :(得分:1)
如果你使用2个get_terms()而不是wp_list_categories会更好。它会更快,更可定制。一个用于父类别,另一个用于当前类别的子类别。这是一个有效的例子:
function display_cats($cats,$current=0,$current_children=array()){
$ret= '<ul>';
foreach ($cats as $cs){
$children=($current!=$cs->term_id)?'':display_cats($current_children);
$ret.= '<li> <a href="'.get_term_link($cs->term_id).'"> '.$cs->name.'</a> '.$children.' </li>
';
}
$ret.= '</ul>';
return $ret;
}
$current_cat=9;//for example
$parents=get_terms('product_cat',array('taxonomy'=>'product_cat','echo'=>false,'depth'=>0));
$current_children=get_terms('product_cat',array('taxonomy'=>'product_cat','child_of'=> $current_cat ,'echo'=>false));
echo display_cats($parents,$current_cat,$current_children);
答案 1 :(得分:0)
我采取get_terms()
路径。
$terms = get_terms($args);
foreach($terms as $term){
// If $term is current term use get_terms() again to fetch its children
}
https://developer.wordpress.org/reference/functions/get_terms/
答案 2 :(得分:0)
对于仍然需要帮助的任何人,这是解决方法。
$category = get_queried_object();
$category_id = $category->term_id;
由此,我们将获取当前类别ID,并将其传递给数组。
'child_of' => $category_id,
这将为您提供当前类别的所有子类别。
希望这会有所帮助。