You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从wp-json分类响应中移除指定术语(如uncategorized)

解决WordPress REST API移除特定分类的问题

正确实现思路

别用rest_prepare_category过滤器(它只能修改单条数据的返回内容,没法彻底移除条目),应该通过修改REST API的查询参数,让后端直接不查询目标分类,从根源上排除它。

具体代码实现

把以下代码添加到主题的functions.php文件中:

add_filter( 'rest_category_query', 'exclude_uncategorized_from_rest_api' );
function exclude_uncategorized_from_rest_api( $args ) {
    // 动态获取"未分类"的ID,默认是1,也可通过get_term_by自定义获取
    $uncategorized_id = get_option( 'default_category' );
    // 合并原有排除规则(如果有的话),添加目标分类ID到排除列表
    $args['exclude'] = isset( $args['exclude'] ) ? array_merge( $args['exclude'], array( $uncategorized_id ) ) : array( $uncategorized_id );
    return $args;
}

代码说明

  • rest_category_query过滤器专门用来修改分类REST API的查询参数,返回修改后的参数数组即可生效。
  • 用get_option('default_category')获取默认分类(未分类)的ID,比硬写ID更适配不同站点配置。
  • 如果原本已有exclude参数,会自动合并进去,不会覆盖原有排除规则。

之前方法失效的原因

  • 设置$response为false:rest_prepare_category要求返回WP_REST_Response对象,返回false会被API处理成布尔值条目,无法真正移除。
  • unset($response)或unset($response->data):该过滤器必须返回响应对象,销毁变量会导致API找不到返回值,触发致命错误。

内容的提问来源于stack exchange,提问作者honk31

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 18:02:36