今天在给客户解决问题时发现在wordpress后台添加的文章分类中每个父分类下有多个层级的子分类,而且需要将一个父分类下所有子分类的文章数目进行统计,之前做的时候都是一个分类,没有涉及到子分类。所有统计方法很简单可以使用get_categories()这个函数就可以做到,但是呢要统计子分类下的文章数目,直接使用这个函数是做不了的,查了下资料找到的都是使用SQL语句查询数据库来做的,而且都不能满足自己的要求。所有还是决定自己写一个出来。经过测试没有发现一些问题。而且可以对分类级数没有限制,也就是说不管你创建了多少个子分类,只要里面有文章都可以统计出来,只要我们在相应的添加代码即可。方法如下:

$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; //将第一级和第二级和第三级统计的文章数目进行相加后放到一个变量中。

这样我们通过php的foreach循环用很少的代码就将一个分类下的文章数目统计出来了,具体的效果点击这里查看http://www.favortt.com/wordpress-index如果遇到第四级的时候只需要按照上面的做法在操作一次就可以了。大家感兴趣的可以试一下,如果有别的更好的方法或者有什么问题的,欢迎大家留言!