WordPress REST API如何在posts返回结果中包含分类及父分类名称
解决方案
直接通过WordPress核心提供的register_rest_field扩展REST API返回字段即可,这是官方原生支持的实现方式,无需依赖第三方工具或额外请求参数。
实现代码
将以下代码添加到站点当前激活主题的functions.php文件,或者自定义功能插件的主文件中:
// 给posts接口注册自定义返回字段 add_action('rest_api_init', function () { // 注册category_name字段 register_rest_field('post', 'category_name', [ 'get_callback' => function ($post) { // 获取文章关联的分类 $categories = get_the_category($post['id']); if (empty($categories)) { return ''; } // 默认取第一个分类,有多分类需求可自行修改返回数组 return $categories[0]->name; }, 'schema' => null, ]); // 注册parent_category_name字段 register_rest_field('post', 'parent_category_name', [ 'get_callback' => function ($post) { $categories = get_the_category($post['id']); if (empty($categories) || $categories[0]->parent == 0) { return ''; } // 获取父分类信息 $parent_cat = get_term($categories[0]->parent, 'category'); return isset($parent_cat->name) ? $parent_cat->name : ''; }, 'schema' => null, ]); });
效果说明
- 代码添加完成后无需额外配置,直接请求
/wp-json/wp/v2/posts接口,每篇文章的返回数据中就会自动包含category_name和parent_category_name字段 - 如果文章没有关联分类,
category_name返回空字符串;如果关联的是顶级分类,parent_category_name返回空字符串 - 若文章需要支持多分类返回,可修改回调逻辑,遍历
$categories数组返回所有分类名称即可
内容的提问来源于stack exchange,提问作者cymmma
相关产品推荐
相关产品推荐

