WP rest API不再支持过滤器参数,那么我如何在自定义分类中获取帖子?

时间:2016-12-03 作者:And Finally

在所有的互联网站上,我都看到了一些人的建议,他们说,当您想在自定义分类法中获取帖子时,应该使用filter参数,例如:

https://example.com/wp-json/wp/v2/posts?filter[genre]=fiction
这似乎是一个非常方便的参数。但在WP-restapi的v2中,它根本不起作用。当我创建了一个WP-Trac记录单以了解发生了什么时,@swissspidy回答说“过滤器参数已被故意删除”,但文档尚未更新。有关更改的讨论,请参见Trac ticket 38378.

好吧,很公平,但有人能告诉我现在应该如何在自定义分类法中检索帖子吗?我正在编写一个插件,它取决于是否能够做到这一点。

例如,如果我创建了一个非层次化的自定义分类法instance 并赋予它价值1 对于自定义帖子类型中的某些帖子,如何检索该类型的所有帖子以及instance=1?

如果无法通过REST API实现,是否有办法通过WordPress实现。支持Jetpack的自托管站点上的com API?

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

自WordPress 4.7filter 已删除任何post终结点的参数。但如果您需要它们,可以通过插件添加它们。WP API Repo有一个插件\'Rest Filter\' 为了这份工作,又小又短。

SO网友:wunch

WordPress REST API文档中有一节介绍registering custom posts and taxonomies with the API. 本质上,您添加\'show_in_rest\' => true 注册自定义帖子类型或自定义分类时。

register_taxonomy(\'instance\', [\'post\'], [
    <other args...>,
    \'show_in_rest\' => true,
]);
完成后,您可以使用自定义分类法的名称作为查询字符串参数,根据该分类法筛选已注册该分类法的任何对象,例如:

https://example.com/wp-json/wp/v2/posts?instance=1
请注意,taxonomy参数的值(上例中为“1”)必须为id 而不是名称或slug。如果您只知道slug,而不知道id,那么可以首先通过单独查询来查找id,因为向API注册自定义分类法也会创建自己的自定义端点:

https://example.com/wp-json/wp/v2/instance?slug=foo-bar