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
实用函数8
Nov 08 PHP
将文件夹压缩成zip文件的php代码
Dec 14 PHP
PHP常用开发函数解析之数组篇[未完结]
Jul 30 PHP
PHP实现提取一个图像文件并在浏览器上显示的代码
Oct 06 PHP
PHP网站开发中常用的8个小技巧
Feb 13 PHP
Yii2中OAuth扩展及QQ互联登录实现方法
May 16 PHP
Laravel框架实现的记录SQL日志功能示例
Jun 19 PHP
PHP SESSION机制的理解与实例
Mar 22 PHP
yii框架数据库关联查询操作示例
Oct 14 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
Mar 24 PHP
有关PHP 中 config.m4 的探索
Aug 26 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网站提速三大“软”招
2006/10/09 PHP
PHP编程中的__clone()方法使用详解
2015/11/27 PHP
php实现的http请求封装示例
2016/11/08 PHP
php指定长度分割字符串str_split函数用法示例
2017/01/30 PHP
php写app用的框架整理
2019/09/29 PHP
理解Javascript_15_作用域分配与变量访问规则,再送个闭包
2010/10/20 Javascript
jQuery hover 延时器实现代码
2011/03/12 Javascript
基于jquery DOM写的类似微博发布的效果
2012/10/20 Javascript
用JavaScript获取DOM元素位置和尺寸大小的方法
2013/04/12 Javascript
异步动态加载js与css文件的js代码
2013/09/15 Javascript
js实现拖拽效果(构造函数)
2015/12/14 Javascript
jQuery实现的tab标签切换效果示例
2016/09/05 Javascript
AngularJS表单验证中级篇(3)
2016/09/28 Javascript
Javascript 实现简单计算器实例代码
2016/10/23 Javascript
javascript 内置对象及常见API详细介绍
2016/11/01 Javascript
Bootstrap Modal遮罩弹出层代码分享
2016/11/21 Javascript
Html5 js实现手风琴效果
2020/04/17 Javascript
JS实现点击下拉菜单把选择的内容同步到input输入框内的实例
2018/01/23 Javascript
在 React、Vue项目中使用SVG的方法
2018/02/09 Javascript
详解vue中axios的使用与封装
2019/03/20 Javascript
使用Python下的XSLT API进行web开发的简单教程
2015/04/15 Python
Pandas之Dropna滤除缺失数据的实现方法
2019/06/25 Python
python绘图模块之利用turtle画图
2021/02/12 Python
html5开发之viewport使用
2013/10/17 HTML / CSS
怀旧香味蜡烛:Homesick
2019/11/02 全球购物
Linux管理员面试经常问道的相关命令
2014/12/12 面试题
一套中级Java程序员笔试题
2015/01/14 面试题
银行介绍信范文
2014/01/10 职场文书
教师考察材料范文
2014/06/03 职场文书
学校查摆问题整改措施
2014/09/28 职场文书
个人查摆剖析材料
2014/10/16 职场文书
2014年小学教导处工作总结
2014/12/19 职场文书
Redis6.0搭建集群Redis-cluster的方法
2021/05/08 Redis
Golang中异常处理机制详解
2021/06/08 Golang
关于Nginx中虚拟主机的一些冷门知识小结
2022/03/03 Servers
MySQL中LAG()函数和LEAD()函数的使用
2022/08/14 MySQL