Wordpress API JSON返回限制

时间:2015-03-20 16:52:53

标签: json wordpress

这是一个关于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

8 个答案:

答案 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