使用 WP-API 节点模块时如何限制返回的 Wordpress REST-API 字段

Posted

技术标签:

【中文标题】使用 WP-API 节点模块时如何限制返回的 Wordpress REST-API 字段【英文标题】:How to restrict returned Wordpress REST-API fields when using WP-API Node Module 【发布时间】:2018-05-02 10:38:53 【问题描述】:

如果我在浏览器中调用这个 Wordpress 博客网址

<root...>wp-json/wp/v2/posts?per_page=5&fields=id,link,title

我返回 JSON,结果仅限于 3 个字段

那么在使用node js wp-api 模块的时候怎么办呢?

我想要类似于 .fields([]) 但文档中没有任何内容,在模块代码中找不到任何内容。 TypeError: wpapi.posts(...).perPage(...).fields 不是函数

或类似 .filter() TypeError: wpapi.posts(...).perPage(...).filter 不是函数 但我认为这可能与另一个所需的 Wordpress 插件有关。

        wpapi.posts()
            .perPage(5)
            .fields(['id','link','title'])
            .search( 'search-term' ) //= (search in title or content)
            .filter(
                category_name: 'islands',
                fields: [ 'id','link','title' ]
            )
            .get(function (err, data) 

.....等等

TypeError: wpapi.posts(...).perPage(...).fields 不是函数

谁能指出我正确的方向?谢谢

【问题讨论】:

【参考方案1】:

看来 wp-api 节点模块不允许这样做。

所以我卸载了它,现在使用 axios 和标准文本 url。

【讨论】:

【参考方案2】:

这对我有用:

wpapi.posts().param('_fields', 'id,title,content').get()

node-wpapi documentation 似乎暗示说perPage() 和类似的函数是调用param(props, value) 的便利函数。

wpapi.posts().param('_fields', ['id','title','content']).get()

似乎也可以,但第一个选项给出的请求 URL 看起来更像 Wordpress REST API Handbook 使用的格式

【讨论】:

以上是关于使用 WP-API 节点模块时如何限制返回的 Wordpress REST-API 字段的主要内容,如果未能解决你的问题,请参考以下文章

将 Woocommerce REST API 与 WP-API 的 JWT 身份验证一起使用时,无法获得超过 12 个结果

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

Firebase 对快照中返回的节点/数据数量的限制

WP-API 获取帖子并按降序排列

正文解析器节点模块返回“已弃用”消息[重复]

你如何实现十进制键盘?