WordPress 获取分类信息
作者:ICai
发布时间:2024-06-30
分类:WordPress 开发
00. 函数介绍
get_categories() 是 WordPress 提供的一个核心函数,用于检索网站中已定义的分类目录。它返回一个数组,包含了各种有关分类的信息,比如分类的名称、ID、描述等。
函数原型
get_categories( string|array $args = '' ): array
01. 函数参数
该函数接受一个数组作为参数 $args,用于筛选和排序分类结果。常用的参数配置如下:
$args = array(
'taxonomy' => null, // 指定分类法类型,默认为系统自带分类类型(仅在自行注册了分类的情况下使用)。
'object_ids' => null, // 指定文章 ID(对应 wp_posts 表的 ID)。
'orderby' => 'name', // 指定排序的类型,可选值: 'name', 'slug', 'term_group', 'term_id', 'id', 'description', 'parent', 'term_order'
'order' => 'ASC', // 排序方式: 'ASC'(升序)或 'DESC'(降序)
'hide_empty' => true, // 是否隐藏空分类(即隐藏没有文章的分类)
'include' => array(), // 仅包含指定的分类 ID
'exclude' => array(), // 排除指定的分类 ID
'exclude_tree' => array(), // 排除分类的同时也会排除该分类下所有的子分类
'number' => '', // 返回结果的数量限制
'offset' => '', // 偏移量
'fields' => 'all', // 要查询的字段
'count' => false, // 是否返回分类包含的文章数量
'name' => '', // 返回指定名称的分类
'slug' => '', // 返回指定别名的分类
'term_taxonomy_id' => '', // 返回指定 ID 的分类
'hierarchical' => true, // 是否按层级返回分类
'search' => '', // 搜索匹配条件的分类
'name__like' => '', // 返回分类名称包含某个关键词的分类
'description__like' => '', // 返回分类描述包含某个关键词的分类
'pad_counts' => false, // 是否将子标签的文章数量计算到 count 值中
'get' => '', // 字符串
'child_of' => 0, // 返回指定分类的子分类及子子分类
'parent' => '', // 仅返回指定分类的直接子分类
'childless' => false, // 返回没有子分类的分类
'cache_domain' => 'core', // 唯一缓存键
'cache_results' => true, // 是否缓存术语信息
'update_term_meta_cache' => true, // 是否为匹配的术语启动元缓存
'meta_query' => '', // 元数据查询
'meta_key' => '', // 元数据键的名称
'meta_value' => '', // 元数据键的值
'meta_type' => '', // 元数据值比较的数据类型
'meta_compare' => '', // 元数据比较运算符
);
- 参数详情参考:WP_Term_Query::__construct()
02. 函数返回值
函数执行成功后,返回一个包含 WP_Term 对象的数组。
返回值结构示例:
Array
(
[0] => WP_Term Object
(
[term_id] => 6
[name] => 示例
[slug] => sample
[term_group] => 0
[term_taxonomy_id] => 6
[taxonomy] => category
[description] =>
[parent] => 0
[count] => 0
[filter] => raw
[cat_ID] => 6
[category_count] => 0
[category_description] =>
[cat_name] => 示例
[category_nicename] => sample
[category_parent] => 0
)
// ...
)
03. 基础示例
下面是一个最基础的使用示例,用于获取所有顶级分类并输出它们的名称:
<?php
$categories = get_categories( array(
'orderby' => 'name',
'parent' => 0
) );
foreach ( $categories as $category ) {
echo '<p>' . $category->name . '</p>';
}
?>