如何在未经过首次身份验证的情况下,任何人可以访问WordPress Rest API的某些参数 - 例如,page
参数不起作用(blog
是此查询中的自定义帖子类型:
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版本做类似的事情?
答案 0 :(得分:0)
对于有同样问题的人,我已经解决了。 page
参数实际上是公开可用的,offset
是您需要进行身份验证的参数。
API没有分页的原因是因为请求网址没有设置paged
查询字符串。每次我尝试使用WordPress Node API的params
选项添加它时,它都无法正常工作:
wpapi.getNews().params('paged', 'paged').perPage( perPage ).page( pageNumber ).then(data=>
它没有用,因为API创建的请求网址似乎始终将page
参数放在paged
之前,导致paged
被忽略查询实际运行。
所以最后,我创建了一个自定义查询(一种被黑客攻击的方式,但是它有效),如下所示:
注册路线:
wpapi.getNews = wpapi.registerRoute('wp/v2', '/news/(?P<customQuery>)');
用法:
wpapi.getNews().customQuery('?paged&per_page=20&page='+pageNumber).then(data =>
使用上述内容,您可以按任何顺序构建任何查询。这有助于我获得正确的分页结果。另外,我们看到“getNews&#39;这是因为我注册了一条路线来访问名为news
的自定义帖子类型。