默认情况下每个子站都会从自己的子站目录里读取静态文件,于是当用户从主站切换到子站时所有静态资源要全部再加载一遍(因为URL不同)。
解决这个问题的方案就是让子站直接访问主站的静态资源,这样就可以全平台共用浏览器缓存了。
往functions.php添加如下代码:
if ( ! is_admin() && ! ( defined('DOING_AJAX') && DOING_AJAX ) ) {
add_filter( 'set_url_scheme', function ( $url ) {
global $blog_id;
if ( 0 !== (int) $blog_id && 1 !== (int) $blog_id ) {
return preg_replace( '#([_0-9a-zA-Z-]+/)(wp-content|wp-includes)#', '$2', $url );
}
return $url;
}, 9999 );
add_filter( 'pre_option_siteurl', function ( $value ) {
return 'https://litepress.cn';
}, 9999 );
}
PS:以上代码应该还有优化空间,只是我实在是懒得继续翻WP的源码了……