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 Http_Template_IT类库进行模板替换
Mar 19 PHP
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
Nov 01 PHP
利用PHP实现短域名互转
Jul 05 PHP
Zend Studio 实用快捷键一览表(精心整理)
Aug 10 PHP
PHP中怎样防止SQL注入分析
Oct 23 PHP
ThinkPHP处理Ajax返回的方法
Nov 22 PHP
在Nginx上部署ThinkPHP项目教程
Feb 02 PHP
PHP批量生成图片缩略图的方法
Jun 18 PHP
php的debug相关函数用法示例
Jul 11 PHP
PHP缓存工具XCache安装与使用方法详解
Apr 09 PHP
php使用fullcalendar日历插件详解
Mar 06 PHP
PhpStorm+xdebug+postman调试技巧分享
Sep 15 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 获取select下拉列表框的值
2010/05/08 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
2013/06/20 PHP
php事务处理实例详解
2014/07/11 PHP
PHP使用feof()函数读文件的方法
2014/11/07 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
2016/06/22 PHP
niceTitle 基于jquery的超链接提示插件
2010/05/31 Javascript
iframe自适应宽度、高度 ie6 7 8,firefox 3.86下测试通过
2010/07/29 Javascript
基于JQuery模仿苹果桌面的Dock效果(初级版)
2012/10/15 Javascript
JS cookie中文乱码解决方法
2014/01/28 Javascript
JavaScript中的正则表达式简明总结
2014/04/04 Javascript
node.js中的fs.fchmodSync方法使用说明
2014/12/16 Javascript
jQuery仿天猫实现超炫的加入购物车
2015/05/04 Javascript
jQuery实现简单的点赞效果
2020/05/29 Javascript
JS中判断null的方法分析
2016/11/21 Javascript
详解Angular Reactive Form 表单验证
2017/07/06 Javascript
fullpage.js最后一屏滚动方式
2018/02/06 Javascript
[48:38]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs Secret
2018/03/31 DOTA
python简单实现基于SSL的IRC bot实例
2015/06/15 Python
Python环境下安装使用异步任务队列包Celery的基础教程
2016/05/07 Python
Python随机数random模块使用指南
2016/09/09 Python
python使用phoenixdb操作hbase的方法示例
2019/02/28 Python
Python学习笔记之lambda表达式用法详解
2019/08/08 Python
.dcm格式文件软件读取及python处理详解
2020/01/16 Python
python应用Axes3D绘图(批量梯度下降算法)
2020/03/25 Python
Python faker生成器生成虚拟数据代码实例
2020/07/20 Python
药学专业大专生的自我评价
2013/12/12 职场文书
三方协议书范本
2014/04/22 职场文书
感恩之星事迹材料
2014/05/03 职场文书
监督检查工作方案
2014/05/28 职场文书
质量提升方案
2014/06/16 职场文书
班主任与学生安全责任书
2014/07/25 职场文书
党员个人整改方案及措施
2014/10/25 职场文书
2014年话务员工作总结
2014/11/19 职场文书
小学2016年“我们的节日·重阳节”活动总结
2016/04/01 职场文书
「魔导具师妲莉亚永不妥协~从今天开始的自由职人生活~」1、2卷发售宣传CM公开
2022/03/21 日漫
zabbix如何添加监控主机和自定义监控项
2022/08/14 Servers