在 WordPress 中使用 SVG(2 个有用的插件推荐)

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您的旅程的每个阶段提供云产品。立即开始使用 价值 200 美元的免费积分!

如果您计划在 WordPress 中使用 SVG,则需要做一些准备工作。由于合理的原因,WordPress 默认情况下不允许使用 SVG。SVG 是一种标记语法,具有强大的功能,包括加载其他资源和运行 JavaScript 的能力。因此,如果 WordPress 默认情况下完全允许使用 SVG,那么即使是具有非常有限角色的用户也可以上传 SVG 并 造成问题,例如 XSS 漏洞。

但假设这对您的网站来说不是问题,您只是使用 SVG。首先,让我们明确一下在 WordPress 中使用 SVG 的含义:**通过媒体上传器上传 SVG,并在文章内容和特色图片中使用 SVG 图片。**

没有任何东西可以阻止您在模板中使用 SVG。这意味着在您的模板中内联 <svg> 或从您的 CSS 等链接的 SVG 文件。这完全没问题,并且您**不需要做任何特殊的事情**才能在 WordPress 中正常工作。

Example of Using SVG in WordPress. the media library is open and shows tile previews of different SVG files.

自己动手

阻止您在 WordPress 中使用 SVG 的原因是媒体库上传器拒绝了文件的 MIME 类型。要允许在 WordPress 中使用 SVG,您实际上只需要这个过滤器。这将放在您的 functions.php 或功能插件中

function cc_mime_types($mimes) {
  $mimes['svg'] = 'image/svg+xml';
  return $mimes;
}
add_filter('upload_mimes', 'cc_mime_types');

但之后的问题是,SVG 文件通常不会在它需要显示的各个地方正确显示,例如媒体库的图片预览、特色图片小部件,甚至可能是经典或块编辑器。我有一个 可以注入以解决此问题的 CSS 代码段。但是——这正是我要写这篇新文章的原因——这对我来说似乎不再起作用,这让我开始思考。

用于在 WordPress 中使用 SVG 的插件

我曾经以为,为什么要费心,允许这个功能的代码很少,我也可以用这个函数自己来做。但 WordPress 当然会随着时间的推移而发生变化,而且由于支持 SVG 不是 WordPress 要默认做的事情,所以这实际上是一个处理此问题的插件的绝佳想法。这样,SVG 插件就可以随着 WordPress 的发展而不断发展,并且从理论上讲,如果足够多的人使用 SVG 插件,它就会得到维护。

因此,这里有一些在 WordPress 中使用 SVG 的插件推荐。

SVG 支持

这个是我最近一直在使用的,它似乎对我来说非常有效。

Screenshot of the SVG Support plugin for WordPress in the WordPress Plugin Directory.

我只是安装它,激活它,然后什么也不做。它确实有一个设置屏幕,但我不需要任何东西。我真的很喜欢它询问你是否可以加载前端的额外 CSS(对我来说,不行,所以我把它关掉了)——不过,如果插件能够显示它将要加载的内容,以便您想添加它到自己的 CSS 中,那就更好了。

将 WordPress 中的 SVG 上传限制为管理员的设置很聪明,但是如果您想更认真地对待 SVG 安全,您可以使用下一个插件...

安全 SVG

这个已经几年没有更新了,但它在 SVG 安全方面更进一步,因为它实际上在您上传时对 SVG 文件进行清理,甚至在将 SVG 添加到 WordPress 时对其进行优化。

Screenshot of the Safe SVG plugin in the WordPress Plugin Directory.

我们对这个网站的作者等有相当严格的编辑控制,因此这个 SVG 插件的安全方面对我来说不是什么大问题。此外,我喜欢自己控制 SVG 优化,所以这个插件对我来说并不完美,不过我可能会推荐给在网站所有者级别技术水平较低的网站。


看起来也有 Easy SVG 支持,但它似乎没有 SVG 支持插件那么好,而且最近没有更新,所以我不能推荐它。

您在 WordPress 中使用 SVG 成功尝试过哪些插件?您想添加什么推荐?