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与SQL注入攻击[一]
Apr 17 PHP
php下使用SMTP发邮件的代码
Jan 10 PHP
PHP连接access数据库
Mar 27 PHP
解析zend studio中直接导入svn中的项目的方法步骤
Jun 21 PHP
php判断两个浮点数是否相等的方法
Mar 14 PHP
php实现复制移动文件的方法
Jul 29 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
Aug 09 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
Aug 17 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
Oct 25 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 PHP
PHPExcel实现的读取多工作表操作示例
Apr 14 PHP
php中数组最简单的使用方法
Dec 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/08/05 PHP
PHP-redis中文文档介绍
2013/02/07 PHP
深入理解PHP中的global
2014/08/19 PHP
Yii2中设置与获取别名的函数(setAlias和getAlias)用法分析
2016/07/25 PHP
php的socket编程详解
2016/11/20 PHP
共享自己写一个框架DreamScript
2007/01/20 Javascript
用jQuery实现一些导航条切换,显示隐藏的实例代码
2013/06/08 Javascript
使用Jquery实现点击文字后变成文本框且可修改
2013/09/21 Javascript
详解AngularJs ui-router 路由的简单介绍
2017/04/26 Javascript
js禁止浏览器页面后退功能的实例(推荐)
2017/09/01 Javascript
JS实现的简单表单验证功能示例
2017/10/13 Javascript
JavaScript函数绑定用法实例分析
2017/11/14 Javascript
Vue.js 中的 v-show 指令及用法详解
2018/11/19 Javascript
layui 弹出层值回传解决方式
2019/11/14 Javascript
vue渲染方式render和template的区别
2020/06/05 Javascript
vue2.0实现列表数据增加和删除
2020/06/17 Javascript
[01:28:31]《加油DOTA》真人秀 第五期
2014/09/01 DOTA
python处理中文编码和判断编码示例
2014/02/26 Python
基于python yield机制的异步操作同步化编程模型
2016/03/18 Python
Python之Web框架Django项目搭建全过程
2017/05/02 Python
python 读取目录下csv文件并绘制曲线v111的方法
2018/07/06 Python
解决pip install xxx报错SyntaxError: invalid syntax的问题
2018/11/30 Python
python 用下标截取字符串的实例
2018/12/25 Python
PyTorch中topk函数的用法详解
2020/01/02 Python
Python基于Tensor FLow的图像处理操作详解
2020/01/15 Python
一些关于python 装饰器的个人理解
2020/08/31 Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
2020/12/01 Python
基于 HTML5 Canvas实现 的交互式地铁线路图
2018/03/05 HTML / CSS
ivx平台开发之不用代码实现一个九宫格抽奖功能
2021/01/27 HTML / CSS
迪拜航空官方网站:flydubai
2017/04/20 全球购物
法国床上用品商店:La Compagnie du lit
2019/12/26 全球购物
小学运动会入场式解说词
2014/02/18 职场文书
护士演讲稿优秀范文
2014/04/30 职场文书
租房安全协议书
2014/08/20 职场文书
校长师德师风自我剖析材料
2014/09/29 职场文书
三年级学生评语大全
2014/12/26 职场文书