WordPress REST API - 有没有办法在帖子响应中返回类别和父类别名称?

Posted

技术标签:

【中文标题】WordPress REST API - 有没有办法在帖子响应中返回类别和父类别名称?【英文标题】:WordPress REST API - Is there a way to return category and parent category name inside of posts response? 【发布时间】:2021-11-09 22:04:54 【问题描述】:

基本上我需要为每个帖子获取category_nameparent_category_name 以响应/wp-json/wp/v2/posts

categories 下,它只返回类别 ID 数组。这不是一个选项,因为有很多类别和子类别可以映射所有这些内容。

使用参数_embed 我可以得到"wp:term" 但这并不是我所需要的。它返回组合的类别和标签数组,有时它不会返回父类别。

有什么解决办法吗?我应该继续阅读文档还是有任何功能可以扩展 WordPress REST API 响应?

【问题讨论】:

【参考方案1】:

有很多方法可以使用您需要的信息来操作 WP Rest API。

一种方法是使用rest_prepare_$post_type 过滤器直接在REST 中filter post 对象

另一种方法是使用register_rest_field 函数注册一个新的“REST 字段”。

使用第一个,您可以做一些简单的事情,例如获取类别名称并将它们作为新的数据字段放入:

add_filter( 'rest_prepare_post', 'my_filter_post', 10, 3 );
function my_filter_post( $data, $post, $context )

    // Does this have categories?
    if( !empty($data->data['categories']) )

        // Loop through them all
        foreach( $data->data['categories'] as $category_id )
            // Get the actual Category Object
            $category = get_category( $category_id );

            if( $category->parent == 0 )
                // "top level" category
                $data->data['parent_category'] = $category->name;
             else 
                // some child level category
                $data->data['child_category'] = $category->name;
            
        
    

    return $data;

使用 REST 字段选项看起来类似于 WPSE answer,尽管您当然需要遍历类别以查看哪个是父级,哪个是子级等。

在任何一种情况下,您都可能需要调整逻辑并使用类似get_ancestors() 函数或many "get hierarchical cat/terms" answers 之一,特别是如果您有多个“父> 子”关系或多个级别每个帖子上的类别 - 但rest_prepare_$post_typeregister_rest_field 应该能够很容易地获得您想要的结果。

【讨论】:

我已经尝试了上述过滤器解决方案并且它有效@Xhynk。谢谢,但现在我有更大的问题。我不熟悉 php,所以我在这里询问是否有任何快速的解决方案。如果我每个帖子有多个类别怎么办。 for example 所以这里有三个父类别,每个类别包含 5 个以上的子类别,每个帖子至少选择每个父类别的一个子类别。那么你会得到 3 个随机排序的 id。输出将再次是 parent_name -> child_name 或嵌套类别名称的数组。也许你有一个想法?

以上是关于WordPress REST API - 有没有办法在帖子响应中返回类别和父类别名称?的主要内容,如果未能解决你的问题,请参考以下文章

WordPress REST API - 有没有办法在帖子响应中返回类别和父类别名称?

WordPress插件:使用REST API

没有让 wordpress nonce 与 wp-rest api 应用程序一起工作

WordPress REST API OAuth curl 命令

Wordpress REST API (wp-api) 404 错误:无法访问 WordPress REST API

如何通过wordpress rest api重置用户密码