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 异常处理实现代码
Mar 10 PHP
PHP 输出缓存详解
Jun 20 PHP
php 将bmp图片转为jpg等其他任意格式的图片
Jun 21 PHP
兼容性比较好的PHP生成缩略图的代码
Jan 12 PHP
smarty内置函数section的用法
Jan 22 PHP
PHP实现根据银行卡号判断银行
Apr 29 PHP
php发送短信验证码完成注册功能
Nov 24 PHP
PHP7匿名类用法分析
Sep 26 PHP
PHP简单实现解析xml为数组的方法
May 02 PHP
PHP的mysqli_sqlstate()函数讲解
Jan 23 PHP
php实现文章评论系统
Feb 18 PHP
PHP autoload使用方法及步骤详解
Sep 05 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中include()与require()的区别说明
2010/03/10 PHP
PHP仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)
2017/05/26 PHP
laravel框架 api自定义全局异常处理方法
2019/10/11 PHP
JQUERY CHECKBOX全选,取消全选,反选方法三
2008/08/30 Javascript
动态刷新 dorado树的js代码
2009/06/12 Javascript
JQuery 选择器、过滤器介绍
2011/02/14 Javascript
关于jquery ajax 调用带参数的webservice返回XML数据一个小细节
2012/07/31 Javascript
javascript弹出窗口实现代码
2015/11/12 Javascript
Node.js Sequelize如何实现数据库的读写分离
2016/10/23 Javascript
AngularJS实现表单验证功能详解
2017/10/12 Javascript
Vue 报错TypeError: this.$set is not a function 的解决方法
2018/12/17 Javascript
JS实现提示框跟随鼠标移动
2019/08/27 Javascript
[04:44]DOTA2英雄梦之声_第12期_矮人直升机
2014/06/21 DOTA
[02:01]BBC DOTA2国际邀请赛每日综述:八强胜者组鏖战,中国队喜忧参半
2014/07/19 DOTA
[01:14]DOTA2亚洲邀请赛小组赛赛前花絮
2017/03/27 DOTA
Python lambda和Python def区别分析
2014/11/30 Python
python制作爬虫爬取京东商品评论教程
2016/12/16 Python
Python基础知识_浅谈用户交互
2017/05/31 Python
简单了解python shutil模块原理及使用方法
2020/04/28 Python
英国领先的亚洲旅游专家:Wendy Wu Tours
2018/01/21 全球购物
加拿大品牌鞋包连锁店:Little Burgundy
2021/02/28 全球购物
工地资料员岗位职责
2013/12/31 职场文书
班组长岗位职责范本
2014/01/05 职场文书
腾讯广告词
2014/03/19 职场文书
毕业班联欢会主持词
2014/03/27 职场文书
巾帼建功标兵事迹材料
2014/05/11 职场文书
临床医学专业求职信
2014/08/08 职场文书
基层领导干部“四风”问题批评与自我批评
2014/09/23 职场文书
群众路线剖析材料
2014/09/30 职场文书
房产销售员2015年终工作总结
2015/10/22 职场文书
反四风问题学习心得体会
2016/01/22 职场文书
2016大一新生入学教育心得体会
2016/01/23 职场文书
检讨书之工作不认真
2019/08/14 职场文书
Python+Appium实现自动抢微信红包
2021/05/21 Python
解决ObjectMapper.convertValue() 遇到的一些问题
2021/06/30 Java/Android