wordpress调用当前分类下子分类的方法,WordPress中获取指定分类及其子分类下的文章数目
分类:web前端

获取特定分类文章数

本文实例讲述了WordPress获取指定分类文章数量的方法。分享给大家供大家参考。具体实现方法如下:

本文实例讲述了wordpress调用当前分类下子分类的方法。分享给大家供大家参考。具体分析如下:

 有时候我们想获取某个分类(category)下的文章数目,以便在博客的某个地方显示出来。下面就提供几个获取特定分类的文章数的方法,你可以根据个人喜好选择:

将以下PHP代码放置在主题目录下的functions.php中:

自己没用过wordpress博客但是个人认为wordpress有函数可直接来子调用当前分类下的子分类的,但是我找了很久没找到,后来找到一具朋友自己的做法,下面我来整理一下.

方法一:

复制代码代码如下:function wt_get_category_count($input = '') {
global $wpdb;
if($input == '') {
$category = get_the_category();
return $category[0]->category_count;
}
elseif(is_numeric($input)) {
$SQL = "SELECT $wpdb->term_taxonomy.count FROM $wpdb->terms, $wpdb->term_taxonomy WHERE $wpdb->terms.term_id=$wpdb->term_taxonomy.term_id AND $wpdb->term_taxonomy.term_id=$input";
return $wpdb->get_var($SQL);
}
else {
$SQL = "SELECT $wpdb->term_taxonomy.count FROM $wpdb->terms, $wpdb->term_taxonomy WHERE $wpdb->terms.term_id=$wpdb->term_taxonomy.term_id AND $wpdb->terms.slug='$input'";
return $wpdb->get_var($SQL);
}
}
然后在需要的地方调用该函数即可,该函数提供三种调用方式:

在企业网站中,点击根分类时,显示当前根分类下的子分类,这是个很常见的需求,大多cms也能实现这个功能,如果使用wordpress架构,可以吗?

     将以下PHP代码放置在主题目录下的functions.php中:

1、在主循环中调出该函数,且不提供参数,则返回第一个分类的文章数,代码如下:

答案是肯定的,wordpress也可以实现这样的功能.

function wt_get_category_count($input = '') {
 global $wpdb;

 if($input == '') {
  $category = get_the_category();
  return $category[0]->category_count;
 }
 elseif(is_numeric($input)) {
  $SQL = "SELECT $wpdb->term_taxonomy.count FROM $wpdb->terms, $wpdb->term_taxonomy WHERE $wpdb->terms.term_id=$wpdb->term_taxonomy.term_id AND $wpdb->term_taxonomy.term_id=$input";
  return $wpdb->get_var($SQL);
 }
 else {
  $SQL = "SELECT $wpdb->term_taxonomy.count FROM $wpdb->terms, $wpdb->term_taxonomy WHERE $wpdb->terms.term_id=$wpdb->term_taxonomy.term_id AND $wpdb->terms.slug='$input'";
  return $wpdb->get_var($SQL);
 }
}

复制代码代码如下:

其实主要用到wp_list_categorys()函数,该函数的child_of参数是一个数字,显示指定ID(也就是所填的这个数字)下的子分类,这样只要找到当前分类根分类的ID就可以显示了。

然后在需要的地方调用该函数即可,该函数提供三种调用方式:

2、提供的参数为数字,且该数字为分类的ID号,则返回对应ID的分类的文章数:

the_category_ID()用于显示当前页面的分类ID,默认是输出的,作为参数传递时,最好传入一个false参数,即the_category_ID(false)获取当前分类ID。

1、在主循环中调出该函数,且不提供参数,则返回第一个分类的文章数:

复制代码代码如下:
3、提供分类的别名,则返回对应缩略名(别名)的分类文章数:

接着就是要获取当前分类的父ID,这个也是本文的重中之重,扒了很多资料,也没找到直接可以实现的,不过通过一个函数,倒可以间接获取,代码如下:

2、提供的参数为数字,且该数字为分类的ID号,则返回对应ID的分类的文章数:

复制代码代码如下:

复制代码代码如下: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:

3、提供分类的别名,则返回对应缩略名(别名)的分类文章数:

该函数对于含有子分类的分类,文章数统计上会有稍许误差。对于分类文章数为0的情况统计得也不是很好。
 
方法二:

1.现在function.php里面添加下面的代码:

     该函数对于含有子分类的分类,文章数统计上会有稍许误差。对于分类文章数为0的情况统计得也不是很好。

其实我们可以直接使用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号
}
2.然后在页面要显示二级分类的地方粘贴下面这段代码即可

方法二:

复制代码代码如下:复制代码代码如下: // 将以下category-name改成你的分类别名即可
echo get_category_by_slug('category-name')->count;
?>
 
方法四:

复制代码代码如下:if(is_single()||is_category())
{
if(get_category_children(get_category_root_id(the_category_ID(false)))!= "" )
{
echo '

     其实我们可以直接使用WordPress的内置函数wp_list_categories(),只是传递函数的时候注意一下就行了:

使用WordPress内置函数get_category

';
}
}
?>
现在就万事具备了,我们就实现一下吧,代码如下:

count; 
?>

复制代码代码如下: // 将以下cat_ID改成你的分类ID即可
echo get_category(cat_ID)->count;
?>

复制代码代码如下:wp_list_categories("child_of=".get_category_root_id(the_category_ID(false)). "&depth=0&hide_empty=0&title_li=");
获得WordPress指定分类(包括子分类)下的所有文章数,代码如下:

方法四:

希望本文所述对大家的WordPress建站有所帮助。

复制代码代码如下:$parent_array = get_categories('hide_empty=0&parent=79');
//使用get_categories()函数,里面参数的意思是hide_empty把子分类下没有文章的也显示出来
//parent 父级分类的ID号
foreach($parent_array as $k=>$v) //第一步
{
$sub_parent_array = get_categories('parent='.$v->cat_ID);
foreach($sub_parent_array as $kk=>$vv) //第二步
{
$three_parent_array = get_categories('hide_empty=0&parent='.$vv->cat_ID);
foreach($three_parent_array as $kkk=>$vvv) //第三步
{
$three_count +=$vvv->category_count; //第三极子分类下文章数进行统计
}
$sub_count +=$vv->category_count; //第二级子分类下文章数进行统计
}
$count +=$v->category_count; //第一级子分类下文章数进行统计
}
$total = $count+$sub_count+$three_count;
//将第一级和第二级和第三级统计的文章数目进行相加后放到一个变量中。

     使用WordPress内置函数get_category

这样我们通过php的foreach循环用很少的代码就将一个分类下的文章数目统计出来了。

count; 
?>

希望本文所述对大家的WordPress建站有所帮助。

总结:

     方法一、三、四可以获取到单纯的文章数量,就代码量来说,方法一的代码是最多的,方法三、四的代码是最少的。就执行效率来说,方法一执行时间约为0.002秒,效率最高;方法四次之,执行时间约为0.004秒;方法三最差,执行时间约为0.008秒。执行效率之所以会有这么大的差异,原因在于方法一专注于一件事,就是查找文章数量,只执行一次数据库查询,而方法三和方法四的是WordPress内置函数,虽然只需一行代码,但是他们并不是专门为查询分类文章数而设计的,而是用于获取分类的全部信息!另外,这三种方法都不会统计子分类下的文章数。

     以上所有方法不存在孰优孰劣之分,执行时间所差的几毫秒根本感觉不出来,你可以根据个人喜好来选择相关的方法。

获取指定分类及其子分类文章数

可能有些时候我们还要获取指定分类及其所有子分类的文章数,下面我们来看一下相关实现办法。
首先,定义实现函数,将以下php代码复制到当前主题的functions.php中:

function ludou_get_cat_postcount($id) {
 // 获取当前分类信息
 $cat = get_category($id);

 // 当前分类文章数
 $count = (int) $cat->count;

 // 获取当前分类所有子孙分类
 $tax_terms = get_terms('category', array('child_of' => $id));

 foreach ($tax_terms as $tax_term) {
  // 子孙分类文章数累加
  $count +=$tax_term->count;
 }
 return $count;
}

使用示例

好了,函数定义完毕,在使用的时候只需给ludou_get_cat_postcount函数传递分类id参数即可,下面是使用示例:

本文由10bet手机官网发布于web前端,转载请注明出处:wordpress调用当前分类下子分类的方法,WordPress中获取指定分类及其子分类下的文章数目

上一篇:没有了 下一篇:没有了
猜你喜欢
热门排行
精彩图文