这是一个关于Wordpress API / wp-json的简单问题。我正在查询在Wordpress中使用某些类别过滤的一些数据。我的问题是如何控制从我的Get请求返回的结果数量...默认返回似乎返回大约11个最近的结果。有什么方法可以让它只返回1(最近),或100个帖子。我可以返回的最低和最高金额是多少。它的语法是什么?这是我的默认请求:
http://thisismywebsitewherewordpresslives.com/wp-json/posts?fiter[category_name]=Some Category Name I want to query&filter[order]=ASC
答案 0 :(得分:38)
如果你正在使用WordPress REST API的v2,那么看起来当前控制返回结果数的方法是:
website.com/wp-json/wp/v2/posts/?per_page=100
将100替换为所需的计数。
如果您使用的是自定义帖子类型,请使用自定义帖子类型替换帖子。另外,请确保在配置自定义帖子类型时设置'show_in_rest' => true
。
答案 1 :(得分:12)
将过滤器[posts_per_page]参数添加到查询中以限制API返回的结果数。
http://thisismywebsitewherewordpresslives.com/wp-json/posts?filter[posts_per_page]=2&fiter[category_name]=Some Category Name I want to query&filter[order]=ASC
上述查询应仅返回2个结果。查询参数列表显示在https://github.com/WP-API/WP-API/blob/master/docs/routes/routes.md#retrieve-posts
中答案 2 :(得分:8)
正如另一位所说:( v2 )
http://example.com/wp-json/wp/v2/posts?per_page=10&page=2
但是如果你想获得更多下一篇文章 :( 分页)
{{1}}
文档: http://v2.wp-api.org/reference/posts/ (滚动到列表帖子)
答案 3 :(得分:3)
目前,API规定了99个限制后的回报。因此,最大值为website.com/wp-json/wp/v2/posts/?&per_page=99
,表示您似乎可以修改以允许其他帖子。这里有一个讨论:https://github.com/WP-API/WP-API/issues/2914
答案 4 :(得分:2)
我的建议不再正确。现在您要使用:
website.com/wp-json/wp/v2/posts/?filter[posts_per_page]=100
更改号码以检索更多或更少的帖子。改变"帖子"如有必要,请自定义帖子类型,并确保在注册自定义帖子类型时设置'show_in_rest' => true
。
注意:虽然在早期测试版的插件(2.0-beta13.1)中将posts_per_page值设置为-1,但它似乎在最新版本中不起作用。现在看来你必须在端点中定义一个值。
答案 5 :(得分:1)
V2中的arg是" per_page" - http://v2.wp-api.org/reference/posts/
答案 6 :(得分:1)
我很惊讶没有人提到使用WordPress为这种情况创建的原生过滤器。
默认情况下,我能够实现返回所需数量的帖子,同时仍允许$_GET['per_page']
param像这样工作:
/**
* Default to all posts being returned rather than the default 10 posts per
* page. Also, do not get in the way of the native $_GET['per_page'] setting.
* @param {int} $newDefault The new default amount of posts to return per paginated page
* @var {void}
*/
function setRestApiPostsPerPage($newDefault) {
foreach (get_post_types() as $i => $postType) {
add_filter( "rest_{$postType}_query", function ($args, $request) {
if (! isset($_GET['per_page'])) {
// new default to overwrite the default 10
$args['posts_per_page'] = $newDefault;
}
return $args;
}, 15, 2);
}
}
我确实发现您无法设置$args['posts_per_page'] = -1;
这会导致错误被引发 which you can see here 。
你可以在闭包/回调/过滤器中抛出任何逻辑来设置你想要的$args['posts_per_page']
。
答案 7 :(得分:0)
您可能会更改:
add_action( 'rest_YOUR_CPT_params', function($params){
if ( isset( $params ) AND isset( $params[ 'per_page' ] ) ) {
$params[ 'per_page' ][ 'maximum' ] = 500;
}
return $params;
});
然后在获取网址中添加?per_page=500
示例:https://domain.pl/wp-json/wp/v2/books?per_page=500