如果您计划在 WordPress 中使用 SVG,则需要做一些准备工作。由于合理的原因,WordPress 默认情况下不允许使用 SVG。SVG 是一种标记语法,具有强大的功能,包括加载其他资源和运行 JavaScript 的能力。因此,如果 WordPress 默认情况下完全允许使用 SVG,那么即使是具有非常有限角色的用户也可以上传 SVG 并 造成问题,例如 XSS 漏洞。
但假设这对您的网站来说不是问题,您只是使用 SVG。首先,让我们明确一下在 WordPress 中使用 SVG 的含义:**通过媒体上传器上传 SVG,并在文章内容和特色图片中使用 SVG 图片。**
没有任何东西可以阻止您在模板中使用 SVG。这意味着在您的模板中内联 <svg>
或从您的 CSS 等链接的 SVG 文件。这完全没问题,并且您**不需要做任何特殊的事情**才能在 WordPress 中正常工作。

自己动手
阻止您在 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 支持
这个是我最近一直在使用的,它似乎对我来说非常有效。

我只是安装它,激活它,然后什么也不做。它确实有一个设置屏幕,但我不需要任何东西。我真的很喜欢它询问你是否可以加载前端的额外 CSS(对我来说,不行,所以我把它关掉了)——不过,如果插件能够显示它将要加载的内容,以便您想添加它到自己的 CSS 中,那就更好了。
将 WordPress 中的 SVG 上传限制为管理员的设置很聪明,但是如果您想更认真地对待 SVG 安全,您可以使用下一个插件...
安全 SVG
这个已经几年没有更新了,但它在 SVG 安全方面更进一步,因为它实际上在您上传时对 SVG 文件进行清理,甚至在将 SVG 添加到 WordPress 时对其进行优化。

我们对这个网站的作者等有相当严格的编辑控制,因此这个 SVG 插件的安全方面对我来说不是什么大问题。此外,我喜欢自己控制 SVG 优化,所以这个插件对我来说并不完美,不过我可能会推荐给在网站所有者级别技术水平较低的网站。
看起来也有 Easy SVG 支持,但它似乎没有 SVG 支持插件那么好,而且最近没有更新,所以我不能推荐它。
您在 WordPress 中使用 SVG 成功尝试过哪些插件?您想添加什么推荐?
哇。真是太棒了。我会安装第一个插件,看看结果。
但我遇到的挑战是,将图片从 JPG 转换为 SVG 会使尺寸变大。
请问我如何防止这种情况发生?
好消息!Safe SVG 预计很快就会更新。10up 的 @jeffpaul 正在努力发布:https://github.com/10up/safe-svg
绝对是这个——https://wordpress.org/plugins/wp-svg-images/——唯一一个在前端编辑器中与 Beaver Builder 一起使用的插件
为什么不直接复制 SVG 代码并粘贴到一个块中?对我来说有效。不需要额外代码或插件。只要确保您放在网站上的 SVG 是干净的代码,然后就完成了。然后,您可以使用 CSS 类或 ID 等进一步控制您的 SVG。
我想到了一些原因
我使用了 WP SVG 图片(https://wordpress.org/plugins/wp-svg-images/),因为它不会修改(即清理)您的 SVG。它会保留您的上传内容,无论好坏。
我之前使用过 Safe SVG 和 SVG Support,但它们一直对内容进行修改,尽管非常细微。并非为了安全性,因为没有值得清理和删除的内容,而是将一些属性移动了。
我在上传之前会对 SVG 进行优化,所以我只需要一个插件保持原样,不要改变任何字节。直接上传即可。
我不知道有 SVG 的插件。我们总是从其他来源获得 SVG,然后直接上传。这很酷。感谢您,今天我又学到了一个新知识。