「WordPress」- 增加单页返回数据量

  CREATED BY JENKINSBOT

问题描述

在 REST API 中,请求参数 per_page 用于指定单次 HTTP 请求返回的数据量。默认值 10,最大值 100。

我们希望可以调整最大值,比如设置最大值为 1000(因为我们清楚自身情况,所以数量调整到 1000,并不会导致服务器压力过大)。

那该如何调整这个最大值呢?

解决办法

在 Appearance => Theme Editor => function.php 中,将如下程序添加到文件最开始:

add_filter( "rest_post_collection_params", 'big_json_change_post_per_page', 10, 1 );
function big_json_change_post_per_page( $params ) {
    if ( isset( $params['per_page'] ) ) {
        $params['per_page']['maximum'] = 1000;
    }
    return $params;
}

点击 Update File 按钮以保存。

这样在调用 /wp-json/wp/v2/posts?per_page=1000 接口时,可以传入更大的 per_page 值。

附加说明

如上示例只能调整返回的文章数,如果想要调整返回的分类数,需要使用 rest_category_collection_params 参数才行。

从道理上说应该可以动态获取。在官方文档中,使用 rest_{$this->post_type}_collection_params 作参数。但是我们在 fucntion.php 中,是没有 $this 参数的。

由于精力时间有限,并且这也不是什么大问题,所以我们不再深入研究,如果日后遇到再行补充。

参考文献

Increase per_page limit in REST API
How to increase per_page limit to 200 ? #2914