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 相关文章推荐
人大复印资料处理程序_输入篇
Oct 09 PHP
php下一个阿拉伯数字转中文数字的函数
Jul 16 PHP
PHP读取CURL模拟登录时生成Cookie文件的方法
Nov 04 PHP
PHP使用CURL实现多线程抓取网页
Apr 30 PHP
PHP+MySQL实现的简单投票系统实例
Feb 24 PHP
总结PHP中DateTime的常用方法
Aug 11 PHP
PHP 芝麻信用接入的注意事项
Dec 01 PHP
php基于dom实现的图书xml格式数据示例
Feb 03 PHP
PHP检查网站是否宕机的方法示例
Jul 24 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
Oct 11 PHP
laravel实现前后台路由分离的方法
Oct 13 PHP
php判断IP地址是否在多个IP段内
Aug 18 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实现微信支付之企业付款
2018/05/30 PHP
PHP join()函数用法与实例讲解
2019/03/11 PHP
js 如何实现对数据库的增删改查
2012/11/23 Javascript
jquery进行数组遍历如何跳出当前的each循环
2014/06/05 Javascript
jquery正则表达式验证(手机号、身份证号、中文名称)
2015/12/31 Javascript
Bootstrap零基础学习第一课之模板
2016/07/18 Javascript
js实现从左向右滑动式轮播图效果
2017/07/07 Javascript
Angular实现可删除并计算总金额的购物车功能示例
2017/12/26 Javascript
使用json-server简单完成CRUD模拟后台数据的方法
2018/07/12 Javascript
vue3.0 CLI - 2.5 - 了解组件的三维
2018/09/14 Javascript
深入理解 Koa 框架中间件原理
2018/10/18 Javascript
JavaScript作用域链实例详解
2019/01/21 Javascript
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
2020/09/04 Javascript
[52:44]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第一场 6.3
2018/06/04 DOTA
Python中字典(dict)和列表(list)的排序方法实例
2014/06/16 Python
跟老齐学Python之dict()的操作方法
2014/09/24 Python
Python实现遍历数据库并获取key的值
2015/05/17 Python
利用Django内置的认证视图实现用户密码重置功能详解
2017/11/24 Python
Django数据库类库MySQLdb使用详解
2019/04/28 Python
python每5分钟从kafka中提取数据的例子
2019/12/23 Python
在django中查询获取数据,get, filter,all(),values()操作
2020/08/09 Python
使用CSS3实现input多选框自定义样式的方法示例
2019/07/19 HTML / CSS
使用Html5、CSS实现文字阴影效果
2018/01/17 HTML / CSS
应届生求职推荐信
2013/10/28 职场文书
自我评价的写作规则
2014/01/06 职场文书
理工学院学生自我鉴定
2014/02/23 职场文书
完美的中文自荐信
2014/05/24 职场文书
大学生推广普通话演讲稿
2014/09/21 职场文书
部队反四风对照检查材料
2014/09/26 职场文书
公民授权委托书
2014/10/15 职场文书
2015年学生会纪检部工作总结
2015/03/31 职场文书
2015大学迎新晚会主持词
2015/07/16 职场文书
《包身工》教学反思
2016/02/23 职场文书
Canvas三种动态画圆实现方法说明(小结)
2021/04/16 Javascript
Windows Server 2019 域控制器安装图文教程
2022/04/28 Servers
TS 类型兼容教程示例详解
2022/09/23 Javascript