You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress子目录部署后脚本样式版本号函数路径适配问题

问题根源

  • 你的WordPress内核迁移到kernel子目录后,wp_styles()->base_url/wp_scripts()->base_url 取到的是内核所在目录的URL(即带/kernel后缀的站点地址),原代码的判断逻辑strpos($src, $baseUrl) === 0 会直接过滤掉所有/content目录下的资源,这部分资源根本不会进入版本号计算逻辑
  • 就算进入逻辑,ABSPATH常量指向的是kernel子目录的本地绝对路径,拼接路径后会得到类似站点根目录/kernel/content/xxx.css的错误路径,自然无法读取到文件修改时间

修复方案

直接替换原有代码为以下版本即可:

function put_modified_time_version($src){
    // 只处理本站点的资源,排除外部资源
    $home_url = home_url();
    if ($src && strpos($src, $home_url) === 0) {
        $newSrc = remove_query_arg('ver', $src);
        // 提取URL中的路径部分(相对于站点根目录)
        $path = wp_parse_url($newSrc, PHP_URL_PATH);
        // 用站点根目录的绝对路径拼接文件本地路径
        $local_path = untrailingslashit($_SERVER['DOCUMENT_ROOT']) . $path;
        if (file_exists($local_path) && $mtime = filemtime($local_path)) {
            $src = add_query_arg('ver', $mtime, $newSrc);
        }
    }
    return $src;
}
add_filter('style_loader_src', 'put_modified_time_version', 15, 1);
add_filter('script_loader_src', 'put_modified_time_version', 15, 1);

修改点说明

  • 移除了原代码中多余的baseUrl参数,改用站点首页地址home_url()作为判断依据,所有本站点的资源(不管是kernel还是content目录)都能进入处理逻辑
  • 路径拼接改用$_SERVER['DOCUMENT_ROOT'](站点根目录的本地绝对路径),不再使用指向内核子目录的ABSPATH,保证两类资源的本地路径都能正确匹配
  • 增加了file_exists判断,避免无效路径触发不必要的PHP warning,同时去掉了错误抑制符@

内容的提问来源于stack exchange,提问作者Epifan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 12:39:01