客户端将WordPress REST JSON API与一些WordPress数据模型一起使用。我们需要从前端访问WordPress API并检索几百篇自定义帖子。
Wordpress有一个hard limit of 100 custom posts.
对于这个用例,我想将这个限制更改为一个更高的数字。我读到你不能在PHP中使用monkey补丁。
有没有办法调整per_page->maximum
价值,比如说,10000?
客户端将WordPress REST JSON API与一些WordPress数据模型一起使用。我们需要从前端访问WordPress API并检索几百篇自定义帖子。
Wordpress有一个hard limit of 100 custom posts.
对于这个用例,我想将这个限制更改为一个更高的数字。我读到你不能在PHP中使用monkey补丁。
有没有办法调整per_page->maximum
价值,比如说,10000?
在WordPress中,对于默认请求,您无法超过每个请求100篇帖子的限制。仍然检索所有帖子的一种方法是查询该接口,直到您拥有所有帖子。另一个是自定义端点。
如果可以,我建议您创建自己的REST端点。这将已经起作用并返回所有帖子
add_action(\'rest_api_init\', \'my_more_posts\');
function my_more_posts() {
register_rest_route(\'myplugin/v1\', \'/myposts\', array(
\'methods\' => \'GET\',
\'callback\' => \'my_more_posts_callback\',
));
}
function my_more_posts_callback( WP_REST_Request $request ) {
$args = array(
\'posts_per_page\' => -1,
);
return get_posts($args);
}
有关的详细信息creating your own endpoint can be found here, 鉴于arguments of get_posts()
are explained here.对于前端的纯JavaScript解决方案,您可以使用x-wp-totalpages
页眉,指示总页数。除非到达此页面,否则我们知道需要再次查询。这样一个基本的递归版本可以工作:
var allPosts = [];
function retrievePosts(opt) {
if (typeof opt === \'undefined\')
opt = {};
var options = $.extend({
per_page: 100,
page: 1
}, opt);
var url = \'https://example.com/wp-json/wp/v2/posts\';
var uri = url + \'?per_page=\' + options.per_page + \'&page=\' + options.page;
$.getJSON(uri, function(data, status, jqXHR) {
var totalpages = jqXHR.getResponseHeader(\'x-wp-totalpages\');
allPosts = allPosts.concat( data );
// here the magic happens
// if we are not done
if (options.page < totalpages) {
// request again, but for the next page
retrievePosts({
per_page: options.per_page,
page: options.page + 1
});
} else {
// WE ARE DONE
// posts are in allPosts
}
});
};
retrievePosts();
这在2020年仍然是一个问题,所以我只是在我们的服务器上编辑了Wordpress源代码。
如果您搜索;100英寸;您可以轻松找到配置。我把我的换成了500。我认为Wordpress是对的,这可能会导致前端速度问题,但对于我们这些运行Wordpress作为无头CMS来呈现另一个应用程序(在我们的例子中是静态站点)的人来说,这真的很烦人,你无法轻松编辑它。
有一个钩子可以操纵每页的最大值。钩子名称的动态部分$post\\U type表示post类型slug
function increase_per_page_max($params){
$params[\'per_page\'][\'maximum\'] = 1000;
return $params;
}
add_filter(\'rest_{$post_type}_collection_params\', \'increase_per_page_max\');
贷记至https://wildwolf.name/how-to-increase-per_page-limit-in-wordpress-rest-api/我有一个问题,我想发送一些数组到jquery,一旦有人点击了特定的元素,我可以看到我不能向任何输入添加数组,所以我决定用json编码数组。但我被困在那里,因为我无法从jquery的输入字段中获取json数据。我使用字段类名在jquery中获取json数据。请有人帮忙,因为我正在构建一个WP短代码,我想将所有属性发送到jquery。提前感谢