是否返回REST API v2中发布的所有自定义分类术语?目前限制为10个任期

时间:2017-09-24 作者:Kyle K

我试图使用RESTAPI v2在单击项目自定义帖子类型项时填充一个模式窗口。

项目具有自定义的分类法和技能。我正在使用_嵌入到JSON URL中,它将返回自定义分类法项,但对于每个返回的项目项,限制为10个术语。对于给定的项目项,我似乎无法让所有标记的技能返回。

我将WordPress设置中的常规分页设置更新为20,认为这将调整返回的相关分类术语的数量:无更改。

我添加了以下方法,以便通过REST访问分类法:

add_action( \'init\', \'my_custom_taxonomy_rest_support\', 25 );
function my_custom_taxonomy_rest_support() {
    global $wp_taxonomies;

    $taxonomy_name = \'skill\';

    if ( isset( $wp_taxonomies[ $taxonomy_name ] ) ) {
        $wp_taxonomies[ $taxonomy_name ]->show_in_rest = true;
        $wp_taxonomies[ $taxonomy_name ]->posts_per_page = -1;
    }
}
我尝试了per\\u page、posts\\u per\\u page的所有变体,并使用了-1、0、99,但都没有成功。我似乎找不到任何关于这对其他人来说是一个问题的东西,所以我有点不知所措。如果一个项目被标记为14项技能,那么我从REST API中最多只能得到每个项目的10项技能分类术语。

有人知道如何将限制改为无限制吗?

2 个回复
SO网友:Alon Katziri

You can try this

/* 
* Increase the limit of posts per page in json
*/
add_filter( \'rest_your_collection_params\', function ( $params, WP_Post_Type $post_type ) {
    if ( \'your_cpt\' === $post_type->name && isset( $params[\'per_page\'] ) ) {
        $params[\'per_page\'][\'maximum\'] = 99;
    }

    return $params;
}, 10, 2 );
SO网友:marco

参考this: "E;嵌入集合响应时(…)嵌入集合将应用默认分页限制"E
如果没有为taxonomy rest路由设置这些参数,则这可能默认为10。

除此之外,您还可以过滤所有嵌入的per\\u page参数:

/** change default limit of embeds within rest requests
 * @link https://github.com/WordPress/WordPress/blob/5.6-branch/wp-includes/rest-api/class-wp-rest-server.php#L1123
 * @link https://developer.wordpress.org/reference/classes/wp_rest_request/get_param/
 * @link https://developer.wordpress.org/reference/classes/wp_rest_request/set_param/
 */
function na_rest_embeds_set_per_page_param($response, $handler, $request) {
    if($request->get_param(\'context\') === \'embed\') {
        $request->set_param(\'per_page\',100);
    }
}
add_filter( \'rest_request_before_callbacks\', \'na_rest_embeds_set_per_page_param\', 10, 3 );
钩住here, 测试上下文是否为嵌入,然后将每页参数设置为100。

结束

相关推荐

Php致命错误:无法将WP_REST_RESPONSE类型的对象用作wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php中

我向WordPress添加了一个自定义端点,如下所示: add_action( \'rest_api_init\', function () { register_rest_route( \'menc/v1\', \'/crosscat/(?P[\\w-]+)/(?P[\\w-]+)\', array( \'methods\' => \'GET\', \'callback\' => \'dept_cat_api\',&#x