如何使 WordPress Rest API 参数无需身份验证即可访问?

How to make WordPress Rest API parameters accessible without authentication?

如何让 任何人 都可以访问 WordPress Rest API 的某些参数而无需首先进行身份验证 – 例如,page 参数不在此查询中不起作用(其中 blog 是自定义 post 类型):

mysite.com/wp-json/wp/v2/blog?page=2&per_page=20

我看到过去可以使这些参数可用,instance :

add_filter( 'json_query_vars', function( $valid_vars ) {

    $valid_vars[] = 'offset';

    return $valid_vars;
});

有什么方法可以实现与今天的 API 版本类似的功能吗?

遇到同样问题的人,我已经解决了。 page参数其实是公开的,offset是你需要认证的

API 没有分页的原因是请求 url 没有设置 paged 查询字符串。每次我尝试使用 WordPress 节点 API 的 params 选项添加它时,它都不起作用:

wpapi.getNews().params('paged', 'paged').perPage( perPage ).page( pageNumber ).then(data=>

它没有工作,因为 API 创建的请求 url 似乎总是将 page 参数放在 paged 参数之前,这导致 paged 在查询实际运行时被忽略。

所以最后,我创建了一个自定义查询(有点被黑客攻击的方式,但它有效),如下所示:

注册路线:

wpapi.getNews = wpapi.registerRoute('wp/v2', '/news/(?P<customQuery>)');

用法:

wpapi.getNews().customQuery('?paged&per_page=20&page='+pageNumber).then(data =>

使用上面的内容,您可以按照您想要的任何顺序构建任何查询。这帮助我获得了正确分页的结果。此外,我们在这里看到 'getNews' 是因为我注册了一个用于访问我的自定义 post 类型的路由,名为 news.