WordPress 6.0 改进了 do_parse_request 过滤器,可以实现跳过没有必要的文章请求
在 WordPress 6.0 之前的版本,插件和主题开发者可以通过 do_parse_request
filter 来更改请求实现在非常早的时候就渲染自定义页面。
但是该方法一直存在一个问题,就是 WordPress 主循环的文章查询和 404 查找还是会继续运行,这样就导致了在这些自定义页面渲染的时候依旧运行一些没有必要的 SQL 查询。
6.0 的改进
WordPress 6.0 为 WP 类的 parse_request
方法添加了一个返回值,默认是返回 true,但是可以通过 do_parse_request
filter 将其修改为 false,这样就可以跳过上面提到的不必要的文章查询和 404 查找。
WordPress 官方建议,如果使用 do_parse_request
实现自定义页面,建议将它的返回值设置为 false。
具体实例
最简单的方法就是:
add_filter( 'do_parse_request', '__return_false' );
但是一般来说,要判断一下是否含有进入自定义页面的参数,有才返回 false:
add_filter( 'do_parse_request', function( $do_parse, $wp, $extra_query_vars ){
if ( 'CUSTOM_VALUE' === $extra_query_vars['custom_arg'] ) {
return false;
}
return $do_parse;
}, 10, 3 );
WPJAM Basic 的自定义页面路由的处理,下一版我也将通过该方法来时来改进优化,进一步提高效率。