通过functions.php添加.csl MIME类型无效(插件方式可正常工作)
解决WordPress子主题添加.csl MIME类型上传失败的问题
问题排查与修复方案
1. 提升过滤器优先级
WordPress的upload_mimes过滤器可能被其他主题/插件代码覆盖,尝试提高自定义函数的执行优先级(默认优先级为10,设为更高数值如99):
// 04082024 - Add .csl as mime type for upload function custom_upload_mimes ( $existing_mimes ) { $existing_mimes['csl'] = 'application/vnd.citationstyles.style+xml'; return $existing_mimes; } add_filter('upload_mimes', 'custom_upload_mimes', 99);
2. 补充兼容型MIME类型
部分服务器环境对标准CSL MIME类型识别存在差异,可同时添加备选类型:
// 04082024 - Add .csl as mime type for upload function custom_upload_mimes ( $existing_mimes ) { $existing_mimes['csl'] = 'application/vnd.citationstyles.style+xml, text/xml, application/xml'; return $existing_mimes; } add_filter('upload_mimes', 'custom_upload_mimes', 99);
3. 配置服务器端MIME规则
- Apache服务器:在子主题目录的
.htaccess文件中添加
AddType application/vnd.citationstyles.style+xml .csl
- Nginx服务器:在站点配置文件中添加
types { application/vnd.citationstyles.style+xml csl; }
4. 清除缓存后重试
修改代码或服务器配置后,清空WordPress缓存、浏览器缓存,再测试.csl文件上传。
5. 多站点模式额外处理
如果是WordPress多站点网络,需确保网络全局设置允许该文件类型,或在网络级别的functions.php中添加相同代码。
内容的提问来源于stack exchange,提问作者POBrien333
相关产品推荐
相关产品推荐

