如何在没有身份验证的情况下访问WordPress Rest API参数?

时间:2017-04-23 20:10:32

标签: wordpress rest wp-api

如何在未经过首次身份验证的情况下,任何人可以访问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版本做类似的事情?

1 个答案:

答案 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的自定义帖子类型。