修正 WordPress 在上传 MP4 文件时的 MIME 类型识别错误
› VFX大学 › wordpress开发 › 修正 WordPress 在上传 MP4 文件时的 MIME 类型识别错误
- This topic has 1 个回复, 1 个参与人, and was last updated 22 小时, 5 分 前 by
追光.
- 作者帖子
- 2025年7月10日 - 下午9:54 #408
追光管理员这段代码的作用是:修正 WordPress 在上传 MP4 文件时的 MIME 类型识别错误,确保 MP4 视频文件可以被正确上传、识别和播放,尤其在一些使用对象存储(如腾讯 COS)或某些浏览器环境下出现类型识别问题时特别有用。
✅ 背景说明
在 WordPress 中,上传文件时会校验其 扩展名(ext)和 MIME 类型(type)。但在以下场景中可能会识别错误,导致上传失败或媒体库无法识别为视频:
MP4 文件上传后被识别为 application/mp4 而非 video/mp4
使用腾讯 COS、阿里 OSS、七牛云等对象存储返回的 Content-Type 异常
有些压缩过的 MP4 或未严格符合 MP4 标准的文件识别失败
✅ 代码详解与用途
1. 修正上传时的 MIME 类型判断
add_filter('wp_check_filetype_and_ext', function($data, $file, $filename, $mimes) { $ext = pathinfo($filename, PATHINFO_EXTENSION); if ($ext === 'mp4') { $data['ext'] = 'mp4'; // 强制设定扩展名 $data['type'] = 'video/mp4'; // 设置 MIME 类型为标准 MP4 视频 } return $data; }, 10, 4);
🔧 说明:
wp_check_filetype_and_ext 是 WordPress 核心用来校验上传文件类型的过滤器。
这段代码强制将 .mp4 文件的 MIME 类型设为 video/mp4,避免 WordPress 拒绝处理它。
解决“文件类型不被允许”或“显示错误”的常见问题。
2. 扩展允许的 MIME 类型
add_filter('mime_types', function($mimes) { $mimes['mp4'] = 'video/mp4'; // 显式允许 .mp4 文件 $mimes['application/mp4'] = 'video/mp4'; // 修复某些服务错误返回的类型 return $mimes; });
🔧 说明:
mime_types 是 WordPress 控制允许上传文件类型的钩子。
这段代码确保 .mp4 和 application/mp4 类型都被允许上传。
修复 CDN、对象存储等返回错误类型导致上传失败的问题。
✅ 推荐用途场景
使用场景
说明
使用 MP4 作为视频媒体上传
确保上传无报错,媒体库正常识别
使用 COS/OSS 等对象存储
防止误识别 MIME 导致上传失败
构建视频站点、在线课程等
保证用户上传视频体验一致、兼容性强
Gutenberg 视频块插入
防止 MP4 被过滤或显示为“非视频格式”
✅ 使用方式
将上述代码添加到你的主题的 functions.php 或功能插件中即可:
// 主题 functions.php 中 // 或单独放入 custom-mime-fix.php 等自定义插件
✅ 总结
这段代码是一个小而实用的补丁,解决了 WordPress 上传 .mp4 文件在某些环境下类型不兼容的问题,尤其适用于:
视频教学平台
媒体库管理工具
对象存储集成站点
- 2025年7月10日 - 下午9:58 #412
追光管理员这段代码的作用是:
阻止 WordPress 从 MP3 文件中自动提取封面图。
📌 原因和用途:
上传 MP3 时,WordPress 会读取里面的封面图作为缩略图
这段代码可以阻止这个行为,避免自动生成图片
有助于节省空间、加快上传速度、保持媒体干净
✅ 适合:
音频类网站(播客、音乐库)
不需要封面图的上传系统
用对象存储或CDN同步的场景
🧩 用法:
把这段代码放进主题的 functions.php 即可:
add_filter('wp_read_audio_metadata', function($metadata, $file) { if (isset($metadata['image'])) { unset($metadata['image']); // 移除自动提取的封面图 } return $metadata; }, 10, 2);
- 作者帖子
- 在下方一键注册,登录后就可以回复啦。