WordPress获取分类页分页总数的函数实例代码
代码
//获取分类页总页数
function zzw_get_term_total_pages($term_id,$taxonomy)
{
$posts_per_page = get_option('posts_per_page'); // 每页文章数
// 获取term文章总数(仅统计已发布文章)
$term = get_term($term_id, $taxonomy);
$total_posts = $term->count;
// 计算总页数
$total_pages = ceil($total_posts / $posts_per_page);
return $total_pages;
}详解
这段代码定义了一个名为 zzw_get_term_total_pages 的 PHP 函数,用于计算 WordPress 分类法(如分类目录或标签)的文章列表总页数。下面是对代码的逐行详细解释:
函数定义
function zzw_get_term_total_pages($term_id,$taxonomy)- 功能:声明函数
get_term_total_pages - 参数:
$term_id:分类法项(如分类目录或标签)的 ID$taxonomy:分类法名称(如'category'或'post_tag')
步骤 1:获取每页文章数量
$posts_per_page = get_option('posts_per_page');- 作用:从 WordPress 系统设置中读取每页显示的文章数量
- 返回值:整数(如 10 表示每页显示 10 篇文章)
- 说明:此值在 WordPress 后台的
设置 > 阅读中配置
步骤 2:获取分类法对象
$term = get_term($term_id, $taxonomy);- 作用:通过 ID 和分类法名称获取对应的分类法对象
- 返回值:包含分类法信息的对象(如名称、描述、文章数量等)
- 关键属性:
$term->count表示该分类下的文章总数
步骤 3:获取文章总数
$total_posts = $term->count;- 作用:从分类法对象中提取已发布文章的总数量
- 重要特性:WordPress 自动维护此数值,仅统计已发布(published)状态的文章
- 注意:草稿、定时发布或私有文章不计入总数
步骤 4:计算总页数
$total_pages = ceil($total_posts / $posts_per_page);- 计算逻辑:
总文章数 / 每页文章数→ 得到理论页数(可能含小数)ceil()函数向上取整 → 确保小数部分也能生成一页
- 示例:
- 若
$total_posts = 25,$posts_per_page = 10 - 计算:
25 / 10 = 2.5 ceil(2.5) = 3→ 总页数为 3
完整代码流程
function zzw_get_term_total_pages($term_id,$taxonomy) {
// 1. 获取系统设置的每页文章数
$posts_per_page = get_option('posts_per_page');
// 2. 通过ID和分类法名称获取分类对象
$term = get_term($term_id, $taxonomy);
// 3. 提取该分类下已发布文章总数
$total_posts = $term->count;
// 4. 计算总页数(向上取整)
$total_pages = ceil($total_posts / $posts_per_page);
// 注意:此处应返回结果(原代码缺少return)
return $total_pages; // 实际使用需添加此行
}改进建议
原代码缺少 return 语句,需补充返回值:
return $total_pages; // 在函数末尾添加典型使用场景
在分类页模板(如 category.php)中调用:
$category_id = get_queried_object_id(); // 获取当前分类ID
$total_pages = zzw_get_term_total_pages($category_id, 'category');
echo "总页数:" . $total_pages;注意事项
- 仅统计已发布文章:草稿、定时文章不计入
- 依赖分类法对象:需确保传入的
$term_id和$taxonomy有效 - 性能高效:直接读取 WordPress 维护的计数,无需额外数据库查询
这个函数是 WordPress 分类页分页功能的核心计算逻辑,常用于生成分页导航(如上一页/下一页链接)。

