使用标记名而不是标记ID的WP API GET POST

时间:2016-10-06 作者:The Unknown Dev

当您使用WP API的搜索机制请求帖子时,它会将标签作为帖子的属性之一返回,但它是一个标签ID数组,而不是标签名称。有没有一种方法可以让API包含标签的名称,而不必通过每个标签的标签ID向API发出后续请求?

tags: [
    188,
    30,
    151,
    189
]
我在API文档中找不到任何能做到这一点的参数,所以我想创建一个自定义插件,以便在将响应发送回API调用方之前过滤并用标记ID替换名称。在这种情况下,我应该听取什么样的行动?

2 个回复
最合适的回答,由SO网友:The Unknown Dev 整理而成

根据我在这里的发现我找到了一些东西post.

基本上,我需要一个插件来监听REST响应何时发出。插件代码类似于以下内容:

function ag_filter_post_json($response, $post, $context) {
    $tags = wp_get_post_tags($post->ID);
    $response->data[\'tag_names\'] = [];

    foreach ($tags as $tag) {
        $response->data[\'tag_names\'][] = $tag->name;
    }

    return $response;
}

add_filter( \'rest_prepare_post\', \'ag_filter_post_json\', 10, 3 );
它将标记名添加为一个名为tag_names. 其余的重物由wp_get_post_tags 作用

SO网友:user219393

Wordpress 5.9中批准的答案对我不起作用。正在更改$tags = wp_get_post_tags($post->ID);$tags = get_the_tags($post->ID);成功了。

此外,如果需要slug而不是名称,只需更新$response->data[\'tag_names\'][] = $tag->name;$response->data[\'tag_names\'][] = $tag->slug;