WordPress 默认禁用 SVG 上传并非因为它“不好”,而是因为 SVG 的本质是代码,而不是像素。
- 核心原因:SVG 是“潜伏”的代码
传统的图片格式(如 JPEG 或 PNG)是二进制数据,而 SVG (Scalable Vector Graphics) 实际上是 XML 格式的文本代码。
由于 SVG 是可以被解析的代码,黑客可以在 SVG 文件中注入恶意的 JavaScript 代码(这种攻击被称为 XSS,跨站脚本攻击)。
- 场景: 如果你上传了一个带有恶意脚本的 SVG,当其他用户(甚至是你自己)在浏览器中预览这张图时,脚本就会在浏览器后台运行,从而可能导致网站权限被盗或数据泄露。
为了保护绝大多数不具备代码审计能力的用户,WordPress 官方选择了最稳妥的方案:默认彻底封锁。
- 如何安全地开启 SVG 支持?
虽然官方默认禁用,但作为设计师或开发者,SVG 的清晰度和超小体积又是不可或缺的。你可以通过以下方式安全地开启它:
方案 A:使用插件(最推荐)
安装专门处理 SVG 的插件,它们不仅能开启上传权限,还会进行 SVG Sanitization(SVG 清洗),自动剔除代码中潜在的危险脚本。
- 推荐插件 1:SVG Support
- 特点:简单好用,支持在 Elementor 中直接预览。
- 推荐插件 2:Safe SVG
- 特点:专注于安全清洗,确保每一个上传的 SVG 都是纯净的。
方案 B:手动开启(不推荐新手,因为不安全)
你可以通过在主题的 functions.php 文件中添加代码来强行允许 SVG 上传,但这种方式没有安全清洗功能。如果你是唯一的操作者且来源可靠,可以使用:
PHP
function cc_mime_types($mimes) {
$mimes[‘svg’] = ‘image/svg+xml’;
return $mimes;
}
add_filter(‘upload_mimes’, ‘cc_mime_types’);
- 在 Elementor 中使用 SVG
既然你在使用 Elementor,你会发现即使你安装了插件,Elementor 有时也会弹出警告。
- 进入 Elementor > 设置 > 高级。
- 找到 “启用未过滤文件上传” (Enable Unfiltered File Uploads)。
- 将其设置为 启用。
- 注意:这会允许你上传 SVG 和 JSON(如 Lottie 动画),请确保你的 SVG 来源是可靠的(比如你自己设计的或从 Flaticon 等大平台下载的)。