让目录模式部署的多站点的所有子站都从主站读取静态资源

论坛首页 论坛 经验分享 让目录模式部署的多站点的所有子站都从主站读取静态资源

标签: 

正在查看 0 条回复
  • 作者
    帖子
    • #20121
      孙锡源
      管理员
        @ibadboy
        楼主
        坏蛋的博客
        ibadboy.net

        默认情况下每个子站都会从自己的子站目录里读取静态文件,于是当用户从主站切换到子站时所有静态资源要全部再加载一遍(因为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的源码了……

    正在查看 0 条回复
    • 哎呀,回复话题必需登录。