本文档详细说明了自 4.7.0 版本公开发布以来 WP REST API 的变更。

5.6 版本

  • 引入用于 API 身份验证的应用程序密码。 r49109
  • 引入批量请求。 r49252
  • 支持路由级别的验证回调。 r48945
  • 将 Site Health 异步测试移至 REST API。 r49154
  • 添加一个钩子,在帖子、其术语和元数据更新后触发一次。 r49172
  • 引入搜索词处理器。 r49103
  • 引入搜索帖子格式处理器。 r49132
  • 允许在搜索控制器中使用字符串 ID。 r49088
  • 支持更广泛的 JSON 媒体类型。 r49329
  • 支持 multipleOf JSON Schema 关键字。 r49063
  • 支持 minProperties 和 maxProperties JSON Schema 关键字。 r49053
  • 支持 patternProperties JSON Schema 关键字。 r49082
  • 支持 anyOf 和 oneOf JSON Schema 关键字。 r49246
  • 确保所有支持的 JSON Schema 关键字都输出在索引中。 r49257
  • 在 wp.apiRequest 中添加 HTTP/1.1 模拟。 r49133
  • 在 wp.apiRequest 中包含 JSON Accept 头。 r49716
  • 如果帖子状态未更改,则不验证它。 r49302
  • 支持为自定义帖子控制器生成评论上链。 r49299

5.5 版本

  • 引入区块类型端点。 r48173
  • 引入插件和区块目录端点。 r48242
  • 引入图像编辑器端点。 r48291
  • 向主题端点添加更多字段。 r47921
  • 为在主题端点中使用而引入 register_theme_feature() API。 r48171
  • 允许向区块渲染器端点发送 POST 请求。 r47756
  • 仅注册一个由所有区块类型共享的单个区块渲染器端点。 r48069
  • 向 oEmbed 端点添加对经典嵌入的支持。 r48135
  • 链接到当前查询资源的 REST 路由。 r48273
  • 引入对默认元数据值的支持。 r48402
  • 将 Link 头添加到暴露的 CORS 头列表中。 48112
  • 将 Content-Disposition、Content-MD5 和 X-WP-Nonce 添加为允许的 CORS 头。 r48452
  • 改进多类型 JSON Schema 支持。 r48306
  • 仅当 type 为 string 时才验证 format 关键字。 r48300
  • 支持 uuid JSON Schema 格式。 47753
  • 支持 hex-color JSON Schema 格式。 r47450
  • 支持 pattern JSON Schema 关键字。 r47810
  • 支持 minItems、maxItems 和 uniqueItems JSON Schema 关键字。 r47923 r48357
  • 支持 minLength 和 maxLength JSON Schema 关键字。 r47627
  • 在验证对象时检查是否提供了必需属性。 r47809
  • 在按上下文过滤响应时支持更多 JSON Schemas。 r47758
  • 在 WP_REST_Request::set_param() 内一致地处理参数类型。 r47559
  • 弃用 HTTP_RAW_POST_DATA 全局变量的回填。 r47926
  • 在注册缺少 permission_callback 的路由时发出 _doing_it_wrong。 r48526
  • 在 REST API 请求期间使用 wp_send_json() 系列函数时发出 _doing_it_wrong。 r48361
  • 确保 rest_ensure_response() 将 WP_HTTP_Response 升级为 WP_REST_Response。 r47849
  • 仅在 REST API 请求期间强制主查询为 is_home()。 r48053
  • 确保 JSON Schema 验证器支持的所有关键字都由 WP_REST_Controller::get_endpoint_args_for_item_schema() 许可。 r47911
  • 确保在预加载 REST API 数据时触发弃用通知。 r48150
  • 有关更多评论,请参阅 WordPress 5.5 中的 REST API 变更。

5.4 版本

  • 引入选择性链接嵌入。 r47224
  • 修复评论控制器中的 PHP 警告,如果被评论的帖子类型不存在。 [r47036](https://core.trac.wordpress.org/changeset/47036]
  • 在注册没有 items schema 的 "array" 设置时添加 _doing_it_wrong 警告。 r47325
  • 正确推断通过查询参数传递的空对象。 r47362
  • 向帖子集合添加 "tax_relation" 参数。 r46646
  • 允许通过 REST 创建新的媒体记录时设置元数据。 r47261
  • 如果用户可以编辑任何帖子类型,则允许访问主题控制器。 r47361.
  • 添加对 REDIRECT_HTTP_AUTHORIZATION 头的支持。 r47239
  • 添加对过滤帖子控制器 schema 的支持。 r47265
  • 如果分类法的指定 rest_base 已被其他资源使用,则添加 _doing_it_wrong 警告。 r47037
  • 通过在执行正则表达式检查之前先匹配 REST API 路由的命名空间来提高路由性能。 r47260
  • 不要假设所有项 schema 都有属性。 r47328
  • 在构建集合响应时重用先前生成的嵌入对象以提高性能。 r47138
  • 在 /themes 端点响应中列出所有核心主题功能支持详情。 r47258
  • 修复非可变路由的 OPTIONS 请求中的链接格式。 r47326
  • 在渲染区块预览时应用所有相关的区块渲染过滤器。 r47360

5.3 版本

  • 为提升性能,在控制器实例上缓存 get_item_schema 的结果。r45811
  • 允许在搜索端点中嵌入 self 链接关系。r46434
  • 将帖子日期属性传递为 null,以将帖子重置为初始的“浮动”日期值。r46249
  • 防止删除帖子修订版本。r45812
  • 如果状态码为 204 或响应体为 null,则不发送响应体。r45809
  • 在 register_meta() 架构中支持 object 和 array 类型。r45807
  • 在 _fields 查询参数中支持点分嵌套层级属性。r46184
  • 在 PUT 或 POST 请求后,于 edit 上下文中返回术语资源。r46098
  • 在状态端点响应对象中引入 date_floating 属性。r46252

Version 5.2

  • 修复将父级术语设置为 0 时出现的未定义属性通知。r44965
  • 移除未使用的 validate_user_can_query_private_statuses() 附件控制器方法。r44934
  • 确保 OPTIONS 请求返回 "Allow" 头。r44933
  • 始终通过 urlencode_deep() 传递 get_items() 方法中的查询参数,以确保其正确编码。r45267

Version 5.1

  • 引入 rest_post_search_query 过滤器,以便对帖子搜索查询的操作参数进行操纵。r44482
  • 允许更改用户电子邮件地址的大小写。r44641
  • 如果在 rest_api_init 钩子之前调用 register_rest_route(),则触发 _doing_it_wrong() 警告。r44568

Version 5.0

  • New Routes & Endpoints
    • 引入实现新 WP_REST_Search_Controller 的 wp/v2/search 路由。搜索类型通过扩展 WP_REST_Search_Handler 来处理,并且可以使用 wp_rest_search_handlers 过滤器过滤当前激活的搜索类型。#39965
    • 引入 wp/v2/blocks 路由以检索单个可重用区块。需要身份验证。#45098
    • 为除 attachment 之外的所有帖子类型引入自动保存端点。自动保存端点利用新的 WP_REST_Autosaves_Controller 类,仅保存帖子的 id、title、post_content 和 excerpt。即使是不支持修订版本的帖子类型,也会启用自动保存功能。需要身份验证。#43316
    • 引入 wp/v2/block-renderer/<name> 路由,用于返回服务器渲染区块的动态生成标记。URL 中的 name 组件结构为 namespace/block-id,e.g. core/archives。需要身份验证。#45098
    • 引入 wp/v2/themes 端点,向区块编辑器暴露受支持的主题功能。此端点仅返回活动主题的数据。需要身份验证。#45016
    • 引入 wp/v2/types/wp_block 端点,以暴露与新的隐藏帖子类型 wp_block 相关的区块标签和功能。#45098
  • Additional Changes
    • 自定义分类法必须指定 show_in_rest 为 true 才能在区块编辑器中可见。
    • 引入 wp_is_json_request() 函数以确定请求是否期望 JSON 响应,如果是,则在此上下文中静默 PHP 警告。r43730
    • 针对公开且可查看的帖子类型并指定了 edit 上下文的请求,现在将返回两个额外属性:permalink_temlate 和 generated_slug。r43720
    • 在使用 register_rest_field 应用自定义帖子属性时,尊重 ?_fields= 过滤器。r43736
    • 允许具有 read_private_posts 权限的用户查询私有帖子。r43694
    • 使用 JSON Hyper Schema targetSchema 声明 unfiltered_html 权限。r43682
    • 在帖子对象中引入 block_version 属性,以表示帖子内是否存在区块及其版本。r43770
    • 添加新的 rest_after_* 操作钩子,在所有写入操作完成后触发。r42864
  • 有关更多评论,请参阅 The REST API in WordPress 5.0。

Version 4.9.8

  • 引入 ?_fields= 全局查询参数,以限制响应对象中包含的属性为指定的子集。#38131
  • 为 register_meta() 的 $args 参数添加 object_subtype 参数:此参数允许开发人员指定注册元数据将在哪些对象子类型(i.e. 特定的帖子类型或分类法)中出现,前提是 show_in_rest 为 true。引入新的包装方法 register_post_meta() 和 register_term_meta(),建议在处理帖子或术语元数据时使用它们代替 register_meta。r43378

Version 4.8.1

  • 添加过滤器,允许在添加嵌入数据后修改响应。r41093
  • wp-api.js 客户端:正确将 settings 资源解释为模型而非集合。r41126
  • 通过调整 REST API URL 来修复 nginx 服务器的 PUT(及其他)请求。r41140

Version 4.8.0

  • 改进 4.7.0 字符串冻结后添加的字符串。r40571, r40606
  • 在 WP_REST_Request::remove_header() 中对头名称进行规范化。r40577
  • 允许来自 file: URL 的 Origin: null。r40600
  • 在准备修订版本时设置全局 $post 变量。r40601
  • 在嵌入响应中包含 featured_media。r40602
  • 为帖子添加 author、modified 和 parent 排序选项。r40605
  • 添加用于代理请求到外部 oEmbed 提供者的端点,并在媒体模态框中使用它,而不是 parse-embed AJAX 操作。这是 WP REST API 在 wp-admin 中的首次使用。 r40628
  • 不要频繁设置 X-WP-Deprecated* 头。r40782
  • 避免在向已认证请求发送空白的 Last-Modified 头。r40805
  • 修复某些请求中使用 $request->set_param() 更改参数的问题。r40815
  • 在管理区域,确有必要时将 REST API 端点 URL 强制设为 https。r40843

Version 4.7.4

  • 修复另一个与日期(DST 相关)的帖子问题。r40325
  • 在基础 /wp-json 响应中添加 gmt_offset 和 timezone_string。r40336
  • 在 WP_REST_Posts_Controller::check_read_permission() 中确认附件的父帖子对象存在。r40337
  • 允许通过相应端点的 slug 参数一次获取多个用户和术语。r40426, r40427

Version 4.7.3

  • 将修订版作者 ID 转换为 int。r40078
  • 正确提供带有 PATH_INFO 的索引。r40079
  • 在 Posts 端点的 view 上下文响应中包含 status 属性。r40081
  • wp-api.js 客户端:合并对象时使用 _.extend 代替 _.union。r40084
  • 为 4.8 版本中的完整多站点实施做准备in 4.8,不允许访问来自不同站点的用户。r40111
  • 正确解析 DELETE 请求的主体参数。r40113
  • 修复帖子和评论日期的多个问题。r40114, r40115
  • wp-api.js 客户端:修复自定义命名空间的路由发现。r40117
  • 修复当没有置顶帖子时 sticky 帖子过滤器的行为。r40136
  • 允许设置所有文章格式,即使主题不支持它们。r40137

Version 4.7.2

  • 统一对象访问处理以简化操作。r39957

Version 4.7.1

  • 在 'rest_allow_anonymous_comments' 中将任何假值视为 false。r39566
  • wp-api.js 客户端:修复 wp.api.collections 对象所使用的模型设置。r39604
  • 空 JSON 主体不报错。r39609
  • 不在 GET /wp/v2/media 端点中包含 password 参数。r39610
  • 允许发送空或无操作的评论更新。r39628
  • 在 GET /wp/v2/media 端点中添加对文件名搜索的支持。r39629
  • 修复当 get_theme_support( 'post-formats' ) 不是数组时的 PHP 警告。r39630
  • 改进 rest_*_collection_params 过滤器文档并修复术语过滤器。r39631
  • 允许将架构 sanitization_callback 设置为 null 以绕过内置清理。r39642
  • 更改用户在用户端点中显示的内容。r39844