编辑整理:整理来源:维基百科,浏览量:50,时间:2023-04-07 09:00:02
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_loadedparse_requestsend_headersparse_querypre_get_posts — WP 主查询6.1 修改之后的顺序:
wp_loadedparse_requestparse_querypre_get_posts — WP 主查询send_headers此项修改应该不会对现有的代码造成什么影响,除非你使用 send_headers 来处理那些真的不需要解析 WordPress 的查询参数的,那么可能需要把你的代码改到更早一些的 Action 去执行,比如提早到 wp_loaded 或者 parse_request Action。
WPJAM Basic 的 JSON API 就是使用 send_headers 来处理的,所以 WordPress 6.1 就要兼容处理了。
对于以后在 send_headers 添加的新代码,都可以愉快地使用所有 is_ 函数了。