WordPress中获取指定分类及其子分类下的文章数目


Posted in PHP onDecember 31, 2015

获取特定分类文章数

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

方法一:

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

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);
 }
}

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

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

<?php echo wt_get_category_count(); ?>

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

<?php echo wt_get_category_count(1); ?>

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

<?php echo wt_get_category_count('hello-world'); ?>

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

方法二:

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

<?php echo strip_tags(wp_list_categories('include=3&hide_empty=0&use_desc_for_title =0&echo=0&show_count=1&style=none&hierarchical =0&title_li=')); ?>

     参数include的等号后面3改成你想要统计文章数的分类ID即可,最终输出形式为 分类名称(文章数)

方法三:

     使用WordPress内置函数get_category_by_slug()

<?php
 // 将以下category-name改成你的分类别名即可
 echo get_category_by_slug('category-name')->count; 
?>

方法四:

     使用WordPress内置函数get_category

<?php
 // 将以下cat_ID改成你的分类ID即可
 echo get_category(cat_ID)->count; 
?>

总结:

     方法一、三、四可以获取到单纯的文章数量,就代码量来说,方法一的代码是最多的,方法三、四的代码是最少的。就执行效率来说,方法一执行时间约为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参数即可,下面是使用示例:

<?php
 echo 'ID为123的分类及其子孙分类的文章数量为:' . ludou_get_cat_postcount(123);
?>
PHP 相关文章推荐
如何对PHP程序中的常见漏洞进行攻击
Oct 09 PHP
phpMyAdmin2.11.6安装配置方法
Aug 24 PHP
php 3行代码的分页算法(求起始页和结束页)
Oct 21 PHP
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
Dec 19 PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
Jun 13 PHP
php写的AES加密解密类分享
Jun 20 PHP
ThinkPHP实现将SESSION存入MYSQL的方法
Jul 22 PHP
PHP使用flock实现文件加锁的方法
Jul 01 PHP
Thinkphp事务操作实例(推荐)
Apr 01 PHP
swoole和websocket简单聊天室开发
Nov 18 PHP
PHP+Ajax实现上传文件进度条动态显示进度功能
Jun 04 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
Apr 27 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
Dec 31 #PHP
WordPress中给媒体文件添加分类和标签的PHP功能实现
Dec 31 #PHP
简单了解将WordPress中的工具栏移到底部的小技巧
Dec 31 #PHP
WordPress中获取所使用的模板的页面ID的简单方法
Dec 31 #PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
Dec 31 #PHP
详解Window7 下开发php扩展
Dec 31 #PHP
WordPress用户登录框密码的隐藏与部分显示技巧
Dec 31 #PHP
You might like
PHP 错误之引号中使用变量
2009/05/04 PHP
php操作xml
2013/10/27 PHP
使用php验证复选框有效性的示例
2013/11/13 PHP
php 中奖概率算法实现代码
2017/01/25 PHP
关于firefox的ElementTraversal 接口 使用说明
2010/11/11 Javascript
jquery 图片上传按比例预览插件集合
2011/05/28 Javascript
javascript ready和load事件的区别示例介绍
2013/08/30 Javascript
RequireJS入门一之实现第一个例子
2015/09/30 Javascript
SpringMVC restful 注解之@RequestBody进行json与object转换
2015/12/10 Javascript
BootStrap框架个人总结(bootstrap框架、导航条、下拉菜单、轮播广告carousel、栅格系统布局、标签页tabs、模态框、菜单定位)
2016/12/01 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
2016/12/03 Javascript
jQuery实现简易的输入框字数计数功能示例
2017/01/16 Javascript
js字符串与Unicode编码互相转换
2017/05/17 Javascript
javascript实现循环广告条效果
2017/12/12 Javascript
Vue模拟数据,实现路由进入商品详情页面的示例
2018/08/31 Javascript
解决vue的 v-for 循环中图片加载路径问题
2018/09/03 Javascript
Vue2.x Todo之自定义指令实现自动聚焦的方法
2019/01/08 Javascript
Nuxt配置Element-UI按需引入的操作方法
2020/07/06 Javascript
浅析JavaScript 函数柯里化
2020/09/08 Javascript
vue 使用原生组件上传图片的实例
2020/09/08 Javascript
在Python的Flask框架中验证注册用户的Email的方法
2015/09/02 Python
使用py2exe在Windows下将Python程序转为exe文件
2016/03/04 Python
python3使用requests模块爬取页面内容的实战演练
2017/09/25 Python
快速了解Python中的装饰器
2018/01/11 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
2019/02/08 Python
Python查找不限层级Json数据中某个key或者value的路径方式
2020/02/27 Python
Django REST Framework 分页(Pagination)详解
2020/11/30 Python
美国最大的网上冲印店:Shutterfly
2017/01/01 全球购物
英国排名第一的LED灯泡网站:LED Bulbs
2019/09/03 全球购物
护士自我鉴定怎么写
2014/02/07 职场文书
质量月口号
2014/06/20 职场文书
亚运会口号
2014/06/20 职场文书
世界卫生日宣传活动总结
2015/02/09 职场文书
酒店销售经理岗位职责
2015/04/02 职场文书
加薪通知
2015/04/25 职场文书
2016年情人节问候语
2015/11/11 职场文书