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
相关产品推荐
相关产品推荐

