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

WordPress REST API无法返回全部视频、标签等数据的问题求助

WordPress REST API 返回内容不全的排查与解决方法

一、内容数量不足的核心原因及解决

1. 默认分页限制

WordPress REST API 默认会限制单页返回的内容数量,默认值通常是10,但可能被主题、插件或自定义代码修改成了更小的值(比如你遇到的4个视频、8个标签)。解决方法:

  • 在API请求URL中显式添加 per_page 参数,比如获取视频的请求改为:/wp-json/wp/v2/your-video-cpt?per_page=100(注意:per_page 最大值为100,超过100条内容需要分页请求,配合 page 参数,比如 page=2 获取第二页)
  • 如果需要永久修改默认限制,可以在主题的 functions.php 中添加代码:
add_filter( 'rest_post_collection_params', 'custom_rest_per_page' );
function custom_rest_per_page( $params ) {
    if ( isset( $params['per_page'] ) ) {
        $params['per_page']['default'] = 100; // 设置默认单页数量
        $params['per_page']['maximum'] = 200; // 可自定义最大值
    }
    return $params;
}

(如果是自定义文章类型,把 rest_post_collection_params 换成对应类型的过滤钩子,比如 rest_your-video-cpt_collection_params)

2. 自定义文章类型的REST支持问题

如果你的「视频」是自定义文章类型(CPT),需要确保注册该类型时开启了REST API支持:

  • 检查注册代码中是否包含 'show_in_rest' => true,同时可以指定 'rest_base' => 'videos' 来设置清晰的API端点路径。如果没开启,REST API无法返回该类型的全部内容。

二、标签未出现在列表中的原因

访问单个标签端点(/wp-json/wp/v2/tags/53)能获取数据,但列表不显示,90%的概率是该标签没有被任何文章/视频关联使用。WordPress REST API 的标签列表端点默认会过滤掉「使用次数为0」的标签。解决方法:

  • 在标签列表请求中添加 hide_empty=false 参数,改为:/wp-json/wp/v2/tags?hide_empty=false,这样就能获取到所有标签,包括未被使用的。
  • 如果需要永久关闭这个过滤,在 functions.php 中添加:
add_filter( 'rest_tag_query', 'include_empty_tags_in_rest' );
function include_empty_tags_in_rest( $args ) {
    $args['hide_empty'] = false;
    return $args;
}

三、其他可能的排查点

  • 权限问题:如果部分内容是「私密」「草稿」状态,REST API 默认不会返回,除非请求携带了具有对应权限的认证信息(比如JWT、Cookie认证)。
  • 插件/主题冲突:某些安全插件、缓存插件可能会限制REST API的返回内容,尝试暂时禁用插件、切换到默认主题(比如Twenty Twenty-Four)来排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 17:40:58