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 就要兼容处理了。