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_name
和parent_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_type
或 register_rest_field
应该能够很容易地获得您想要的结果。
【讨论】:
我已经尝试了上述过滤器解决方案并且它有效@Xhynk。谢谢,但现在我有更大的问题。我不熟悉 php,所以我在这里询问是否有任何快速的解决方案。如果我每个帖子有多个类别怎么办。 for example 所以这里有三个父类别,每个类别包含 5 个以上的子类别,每个帖子至少选择每个父类别的一个子类别。那么你会得到 3 个随机排序的 id。输出将再次是 parent_name -> child_name 或嵌套类别名称的数组。也许你有一个想法?以上是关于WordPress REST API - 有没有办法在帖子响应中返回类别和父类别名称?的主要内容,如果未能解决你的问题,请参考以下文章
WordPress REST API - 有没有办法在帖子响应中返回类别和父类别名称?
没有让 wordpress nonce 与 wp-rest api 应用程序一起工作
WordPress REST API OAuth curl 命令