WonderCSS

wordpress技巧:获取当前分类下的子分类

最近在帮人搭建一个类似淘宝店的WordPress站,在此就有一个问题可以记录到博客里了(不然网站真没什么可更新的,总不能为了更新而更新吧)。什么问题呢?就是要在产品目录下显示出子“目录”,对于WordPress的用词那就是在当前分类下调取子分类。在网上找来一圈,经测试后将可行的方案记录下来。

在Wordpress主题的function.php文件内添加下面的代码:


/**
 * Get Child Category
 */
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号
}

然后,在分类页(category.php)或文章页(single.php)模板内写入下面代码进行获取即可。


<?php
if(is_single()||is_category())
{
	if(get_category_children(get_category_root_id(the_category_ID(false)))!= "" )
	{
		echo '<ul class="child-category">';
		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>';
	}
}
?>

代码中也能看得出,这里的子分类列表是支持WordPress参数设置的。比如你希望显示出子分类的文章数,只需要为在参数上添加&show_count=1即可。

具体参考如下:

  • ‘show_option_all’ => “, 无链接的分类
  • ‘orderby’ => ‘name’, 按照分类名排序
  • ‘order’=> ‘ASC’, 升序
  • ‘show_last_update’ => 0, 不显示分类中日志的最新时间戳
  • ‘style’ => ‘list’, 用列表显示分类
  • ‘show_count’ => 0, 0, 不显示分类下的日志数
  • ‘hide_empty’ => 1, Displays only Categories with posts
  • ‘use_desc_for_title’ => 1, 显示分类链接中 title 标签的分类描述
  • ‘child_of’ => 0, 子分类无限制
  • ‘feed’ => ”, 无 feed
  • ‘feed_image’ => ”, 无 feed 图片显示
  • ‘exclude’ => ”, 不在分类列表中显示该分类
  • ‘hierarchical’ => true, 分层显示父/子分类
  • ‘title_li’ => __(‘Categories’), 在列表前作为标题显示分类
  • ‘echo’ => 1 显示分类

By 于湛 发布于 2014.02.25 3,359 次浏览

发表评论

电子邮件地址不会被公开。 必填项已用*标注