在WordPress获取父分类是比较常见的,悟空搜今天给大家讲讲怎么获取父分类的所有子分类。
其实也很简单,主要用到这个函数:wp_list_categories(),不过在用函数之前需要添加一段代码:
- //父分类获取所有子分类
- 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号
- }
把上面代码添加到主题的 function.php 文件最下,然后在需要获取父分类的所有子分类的地方使用下面代码:
- <?php wp_list_categories(
- $args = array(
- 'show_option_all' => '',
- 'orderby' => 'name',
- 'use_desc_for_title' => 1,
- 'child_of' => get_category_root_id($cat),
- 'optioncount'=>1,
- 'hierarchical' => 1,
- 'title_li' => '',
- 'show_option_none' => __('<span style="padding:0 20px;">抱歉,暂无分类。</span>'),
- 'depth' => 1,
- 'taxonomy' => 'category',
- 'walker' => null
- ));
- ?>
这样就可以在获取到父分类的所有子分类
方法2
在企业网站制作时,需要在网站的边栏列出企业产品分类,如果公司网站产品项目很多的情况,就需要设置二级分类或者子分类。如下图:
如何在自己建网站时显示当前分类下的子分类或者在文章页显示所属分类的子分类这样的问题,尤其在做wordpress中文主题的时候必须要用到这个技巧的。
方法/步骤
1.首先在网站主题的函数模板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号
- }
2.然后在页面要显示子分类的地方(一般是在侧边栏)粘贴下面这段代码即可
- <?php wp_list_cats('child_of=' . get_category_root_id($cat) . '&depth=1&hide_empty=0&hierarchical=1&optioncount=1');?>
如果想更灵活的调用当前分类下的子分类,可以使用下面的代码:
- <?php
- $args=array(
- 'child_of'=> get_category_root_id($cat),
- 'hide_empty'=>'0',
- );
- $categories=get_categories($args);
- foreach($categories as $category) {
- echo '<h3><a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a></h3>';
- }
- ?>