如何使 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
.
如何让 任何人 都可以访问 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
.