WordPress 3.5+移除后台“默认上传路径”选项,但可通过三种方式修改:一、定义UPLOADS常量;二、在functions.php中启用隐藏设置项;三、用upload_dir过滤器动态控制路径。

WordPress 3.5 及之后版本,后台媒体设置中已移除“默认上传路径”选项,但上传路径仍可修改,只是方式变了——不再靠界面点选,而是通过代码配置。核心方法有三种,按推荐顺序说明如下:
方法一:使用 UPLOADS 常量(最简洁)
适合希望统一更改所有媒体文件存储位置(如从 wp-content/uploads 改为 uploads 或 media)的用户。
- 打开网站根目录下的
wp-config.php文件 - 在
/* That's all, stop editing! */这行之前,添加一行:
这会把上传目录设为 yourdomain.com/uploads/(注意:不带 wp-content 前缀,且不能含协议或域名)。
- 保存后上传,新上传的图片就会存到该目录下
- ⚠️ 缺点:无法自定义 URL 地址(比如用 CDN 子域名),也不影响旧文件路径
方法二:启用后台隐藏的上传路径设置项
如果你习惯在后台操作,可以临时恢复被隐藏的设置框。
- 将以下代码粘贴到当前主题的
functions.php文件末尾:
update_option('upload_path', WP_CONTENT_DIR . '/uploads');
}
保存并刷新后台 → 设置 → 媒体 页面,即可看到“默认上传路径”和“文件的完整 URL 地址”输入框。
- 填入你想要的本地路径(如
wp-content/my-media)和对应 URL(如https://cdn.example.com/my-media) - ✅ 设置完成后,建议删除这段代码,避免重复执行
方法三:用 upload_dir 过滤器(最灵活)
适用于需要动态控制路径的场景,比如按文章类型、用户角色或自定义条件分目录存储。
- 在主题
functions.php中添加:
function my_custom_upload_dir($uploads) {
$custom_subdir = '/articles'; // 可换成 /slides、/avatars 等
$uploads['subdir'] = $custom_subdir;
$uploads['path'] = $uploads['basedir'] . $custom_subdir;
$uploads['url'] = $uploads['baseurl'] . $custom_subdir;
return $uploads;
}
这样所有新上传的文件都会进入 wp-content/uploads/articles/ 目录。
- 还可结合
$_REQUEST['post_id']判断当前编辑的文章类型,实现“幻灯片传到slides,下载文件传到downloads” - 优先级最高,会覆盖
UPLOADS和后台设置
注意事项
修改后需检查几点:
- 确保目标文件夹存在且权限为
755,服务器有写入权限 - 旧媒体文件不会自动迁移,需手动复制 + 数据库路径更新(搬家改域名时常用)
- 若启用了 CDN 或对象存储插件,路径逻辑可能被接管,此时应优先配置插件而非修改 WordPress 原生设置


















