使用One User Avatar插件时上传路径重复uploads的问题
解决One User Avatar插件头像上传路径重复uploads的问题
你遇到的路径重复问题,是因为代码里错误设置了basedir、baseurl和上传路径的关系:原代码把basedir设为wp-content,同时uploadDir包含了完整的wp-content/uploads/avatar路径,导致WordPress生成URL时,在baseurl(wp-content)基础上重复拼接uploads部分,最终出现双uploads的错误地址。
修正后的代码如下:
function wp_set_custom_upload_folder($uploads) { if ( isset($_FILES['wpua-file']) && !empty($_FILES['wpua-file']) ) { $sub_dir = 'avatar'; // 基于默认uploads目录拼接子文件夹路径 $uploads['path'] = $uploads['basedir'] . '/' . $sub_dir; $uploads['url'] = $uploads['baseurl'] . '/' . $sub_dir; $uploads['subdir'] = '/' . $sub_dir; // 检查并创建目标文件夹(如果不存在) if (!file_exists($uploads['path'])) { mkdir($uploads['path'], 0755, true); } } return $uploads; } add_filter('upload_dir', 'wp_set_custom_upload_folder');
关键修改说明:
- 不再手动定义完整路径,而是基于WordPress默认的
basedir(wp-content/uploads绝对路径)和baseurl(对应URL)拼接子目录avatar,确保路径层级正确 - 设置
subdir参数,让WordPress正确识别子目录结构,避免路径拼接错误 - 用
isset()和!empty()更安全地判断头像上传文件是否存在
内容的提问来源于stack exchange,提问作者rk9802710
相关产品推荐
相关产品推荐

