WordPress插件中无法上传WMA文件问题求助
解决WordPress无法上传.wma文件的问题
你已经通过upload_mimes过滤器添加了.wma的MIME类型,但仍无法上传,可能是以下原因导致,对应解决方案如下:
1. 修正WordPress的文件类型检测逻辑
WordPress会通过fileinfo扩展检测文件实际MIME类型,可能和你设置的audio/x-ms-wma不匹配。可以添加wp_check_filetype_and_ext过滤器强制识别.wma文件:
add_filter('wp_check_filetype_and_ext', function($data, $file, $filename, $mimes) { $file_ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION)); if ($file_ext === 'wma') { return [ 'ext' => 'wma', 'type' => 'audio/x-ms-wma', 'proper_filename' => $filename ]; } return $data; }, 10, 4);
2. 检查多站点环境的额外限制
如果你的WordPress是多站点模式,需要确认网络管理后台的设置 > 上传设置里是否允许.wma文件;也可以用site_option_upload_filetypes过滤器添加该类型:
add_filter('site_option_upload_filetypes', function($types) { if (strpos($types, 'wma') === false) { $types .= ' wma'; } return $types; });
3. 排查安全插件的拦截
诸如Wordfence、iThemes Security这类安全插件通常会有独立的上传文件类型白名单,需要进入插件设置页面,将.wma添加到允许上传的列表中。
4. 补充备选MIME类型
部分服务器对.wma的MIME识别可能是audio/wma而非audio/x-ms-wma,可以修改upload_mimes中的设置,同时支持两种类型:
$mimes['wma'] = ['audio/x-ms-wma', 'audio/wma'];
内容的提问来源于stack exchange,提问作者alancc
相关产品推荐
相关产品推荐

