问题描述
在 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
WP_REST_Posts_Controller::get_collection_params / rest_{$this->post_type}_collection_params
How to increase per_page limit to 200 ? #2914