轻松嵌入功能主要由 oEmbed 驱动,这是一种供消费者(例如您的博客)向提供商(例如 YouTube)请求嵌入内容所需 HTML 的协议。

oEmbed 旨在避免从托管您希望嵌入的媒体的网站复制和粘贴 HTML。它支持各种类型的内容,如视频、图像、文本等。

这适用于任何 URL 吗?

不,默认情况下不适用。WordPress 核心有一个内部白名单出于安全原因,仅允许某些 URL 可被嵌入。好消息是,该白名单可以被修改,并且可以通过注册其句柄来添加新站点和 URL。

我该如何添加或更改对网站的支持?

添加对额外网站的支持取决于该站点是否支持 oEmbed。oEmbed.com提供了数百个支持的提供商列表。

为支持 oEmbed 的站点添加支持

如果站点支持 oEmbed,您需要调用wp_oembed_add_provider()将站点和 URL 格式添加到内部白名单中。

为非 oEmbed 站点添加支持

您需要使用wp_embed_register_handler()注册一个处理程序,并提供一个生成 HTML 的回调函数。

移除对支持 oEmbed 的站点的支持

如果您希望移除一个支持 oEmbed 的提供商,您需要调用wp_oembed_remove_provider。

关于 oEmbed 发现呢?

自 4.4 版本起,WordPress 支持 oEmbed 发现,但对于通过非白名单站点嵌入的内容类型有严重限制。

具体来说,HTML 和视频内容会被过滤,仅允许链接、引用块和 iframe,并且这些元素会进一步过滤以防止插入恶意内容。随后 HTML 会被修改以进行沙箱处理,并施加额外的安全限制。

但是,如果您认为自己足够了解而无需这种级别的安全保护,您可以赋予 unfiltered_html 用户(管理员和编辑者)从在其 <head> 中包含 oEmbed 发现标签的网站嵌入内容的能力。

“链接”和“照片”类型的 oEmbed 发现内容在此方面受到的过滤并不那么严格;不过,它们已被正确转义以确保安全,并防止任何恶意内容在网站上显示。