SVG作为一种通用的矢量格式,已经被主流浏览器所支持。截至本文发稿,WordPress没有内置SVG支持,用户无法直接将SVG图片上传到WordPress文章或者媒体库中,实在看不懂虽然允许嵌入 JavaScript 代码会带来一些安全问题,但也不是不能解决,因此不支持 SVG 有点浪费时间。
幸运的是,WordPress 是一个开放的平台。虽然 WordPress 默认不支持上传 SVG 图片,但是我们可以通过一些方式将这个功能添加到我们的站点中。
通过代码为WordPress添加SVG支持
add_filter(‘wp_check_filetype_and_ext’, function ($data, $file, $filename, $mimes) { global $wp_version; if ($wp_version !== ‘4.7.1’) { return $data; } $filetype = wp_check_filetype($filename, $mimes); return [ ‘ext’ => $filetype[ ‘ext’ ], ‘type’ => $filetype[ ‘type’ ], ‘proper_filename’ => $data[ ‘proper_filename’ ], ]; }, 10, 4); add_filter(‘upload_mimes’, function ($mimes) { $mimes[ ‘svg’ ] = ‘image/svg+xml’; return $mimes; }); add_action(‘admin_head’, function () { echo ‘<style> .attachment-266×266, .thumbnail img { width: 100% !important; height: auto !important; } </style>’; });
以下是允许在WordPress中上传SVG图像的代码,只需添加到主题的functions.php文件或插件文件中即可启用对WordPress的SVG支持。
使用此方法将 SVG 支持添加到 WordPress 没有安全检查,不建议用于多用户 WordPress 站点。
通过插件启用对WordPress的 SVG 支持
使用Safe SVG插件给WordPress添加SVG支持是一种简单的方法,推荐大家使用这种方法。除了启用 WordPress 支持外,此插件还对上传的 SVG 文件进行清理和验证,以防止可能影响网站的 SVG 漏洞。
Safe SVG插件的安全处理功能由svg-sanitizer库实现。如果您有代码整洁的习惯,想在自己的主题或插件中集成 SVG 支持,可以参考 Safe SVG 插件实现安全处理功能。
为 WordPress
启用 SVG 支持的其他方法
此外,流行的 Elementor 编辑器还内置了启用 SVG 支持的功能,但您似乎只能在 Elementor 编辑器中上传 SVG,而不是在默认媒体库中。