WordPress自定义层级分类法:REST API单次获取全层级术语?
解决WordPress层级分类法REST API单次获取所有术语的问题
直接通过API参数实现(无需代码)
如果你的自定义分类术语总数不超过100个,直接在API请求中添加per_page=100参数即可一次性获取所有层级的术语:
[domain]/wp-json/wp/v2/vl_bok_primary_cat?per_page=100
WordPress REST API默认仅返回10条结果,per_page的上限默认是100,设置为100即可覆盖绝大多数场景。
术语超过100时的调整
如果你的术语数量超过100,需要添加代码调整REST API的返回上限。将以下代码添加到主题的functions.php文件或自定义插件中:
add_filter( 'rest_term_collection_params', 'adjust_vl_cat_rest_per_page', 10, 2 ); function adjust_vl_cat_rest_per_page( $params, $taxonomy ) { // 仅针对你的自定义分类法调整 if ( $taxonomy === 'vl_bok_primary_cat' ) { $params['per_page']['maximum'] = 500; // 按需设置最大返回数量 } return $params; }
之后就可以用per_page=500(或你设置的数值)来获取所有术语。
修正默认API请求的返回逻辑
如果默认调用[domain]/wp-json/wp/v2/vl_bok_primary_cat仅返回二级术语,可能是分类法的REST查询被默认限制了父级参数。添加以下代码可以让默认请求自动返回所有层级的术语:
add_filter( 'rest_vl_bok_primary_cat_query', 'remove_default_parent_restriction', 10, 2 ); function remove_default_parent_restriction( $args, $request ) { // 未指定parent参数时,取消父级限制 if ( ! isset( $request['parent'] ) ) { unset( $args['parent'] ); } return $args; }
添加后,直接调用默认的API端点就能获取所有层级的术语,无需额外参数。
内容的提问来源于stack exchange,提问作者user3562286
相关产品推荐
相关产品推荐

