在WordPress当前分类或者正文页面,想调用显示与当前分类存在父子关系的分类目录时,会用到。
如:一个分类页面,想显示出自己的上级分类
代码一:
将下面代码加到主题模板适当位置,比如侧边栏:
<?php $current = ""; if(is_single()){ $parent = get_the_category(); $parent = $parent[0]; $current = "¤t_category=".$parent->term_id; }else if(is_category()){ global $cat; $parent = get_category($cat); } if($parent->category_parent != 0){ $cat_id = $parent->category_parent; $parent = get_category($cat_id); if($parent->category_parent != 0){ $cat_id = $parent->category_parent; }else{ $cat_id = $parent->term_id; } }else{ $cat_id = $parent->term_id; }?><?php if(!is_page()) { ?> <h3><?php echo $parent->cat_name; ?><span><?php echo $parent->slug; ?></span></h3> <ul id="cat_list"> <?php wp_list_categories("title_li=&child_of=$cat_id".$current); ?> </ul><?php } ?>
代码二:
将下面代码加到主题function.php模板文件中:
function get_category_root_id($cat){ $this_category = get_category($cat); // 取得当前分类 while($this_category->category_parent) // 若当前分类有上级分类时,循环 { $this_category = get_category($this_category->category_parent); // 将当前分类设为上级分类(往上爬) } return $this_category->term_id; // 返回根分类的id号}
调用显示代码加到主题模板的适当位置:
<?php if(is_category()) { if(get_category_children(get_category_root_id(the_category_ID(false)))!= "" ) { echo '<ul>'; echo wp_list_categories("child_of=".get_category_root_id(the_category_ID(false)). "&depth=0&hide_empty=0&title_li=&orderby=id&order=ASC"); echo '</ul>'; } }?>