WordPress 6.1 将 send_headers Action 后移到准备加载文章的后面

2023-04-13 10:18:03 浏览数 (2)

WordPress 6.1 将 send_headers Action 移到 WordPress 常规的例程的稍后的位置,之前在确定要发送哪些页面 headers 的时候,所有 is_ 的函数(比如is_singular)都不起作用,通过此项改动,将send_headers 移到 WordPress 的查询解析完成之后,这些 is_ 的函数都可以用了。

这样就可以:

  • 管理页面缓存行为
  • 使用 HTTP rel=preload 标头预加载资源
  • 根据条件进行跳转,和管理其他 200 状态的场景

而目前这些场景通常是在之后的 Action(比如 template_redirect)中进行处理的,其实这样在语义上有点让人困惑,并且还效率低下。

举一个最有意义的例子,X-Pingback 这个 HTTP 标头其实只需要在文章详情页才需要发送,6.1 就是因为 send_headers 后移而得以优化。

下面我们修改之前和之后的常见的 Action 加载顺序:

未修改之前的顺序:

  • wp_loaded
  • parse_request
  • send_headers
  • parse_query
  • pre_get_posts — WP 主查询

6.1 修改之后的顺序:

  • wp_loaded
  • parse_request
  • parse_query
  • pre_get_posts — WP 主查询
  • send_headers

此项修改应该不会对现有的代码造成什么影响,除非你使用 send_headers 来处理那些真的不需要解析 WordPress 的查询参数的,那么可能需要把你的代码改到更早一些的 Action 去执行,比如提早到 wp_loaded 或者 parse_request Action。

WPJAM Basic 的 JSON API 就是使用 send_headers 来处理的,所以 WordPress 6.1 就要兼容处理了。

0 人点赞