You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress中get_terms()与get_categories()的差异及返回对象对比

WordPress中get_terms()与get_categories()的核心差异

1. 本质定位与设计逻辑

get_categories()是**专门针对默认文章分类(category分类法)**的封装函数,而get_terms()是通用型的术语查询函数,支持所有WordPress分类法(包括默认的category、post_tag,以及自定义分类法)。

本质上,get_categories()内部就是调用了get_terms(),只是预先设置了针对category分类法的参数——前者是“专用工具”,后者是“通用工具”。

2. 参数默认值的区别

  • get_categories():默认自动指定taxonomy为category,无需手动传入;默认hide_empty为true(隐藏无文章的空分类),还包含一些针对分类的预设过滤逻辑。
  • get_terms():必须明确指定taxonomy参数(比如array('category', 'post_tag')),否则在新版WordPress中会直接报错;默认hide_empty同样为true,但没有预设分类法,完全依赖传入的参数控制查询范围。

3. 返回字段差异的核心原因

你看到的cat_ID、category_count等额外字段,并非WP_Term对象的标准字段,而是get_categories()为兼容旧版WordPress代码添加的别名:

  • cat_ID 是 term_id 的别名
  • category_count 是 count 的别名

get_terms()返回的是标准WP_Term对象,仅包含官方定义的核心字段(term_id、name、slug、count等),不会额外添加这些兼容字段。

4. 使用场景区分

  • 仅需查询默认文章分类时,用get_categories()更简洁,无需手动设置分类法参数。
  • 需要查询多种分类法(比如同时查分类和标签)、自定义分类法,或者需要更灵活的术语查询逻辑时,必须使用get_terms()。

代码示例:二者的底层关联

get_categories()的核心逻辑等价于:

$categories = get_terms( array(
    'taxonomy' => 'category',
    'hide_empty' => true,
    'hierarchical' => true,
    // 其他针对分类的预设参数
) );

内容的提问来源于stack exchange,提问作者mahesh Babriya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 19:55:33