修复WordPress Facebook oEmbed嵌入问题方法
Facebook 已正式停止支持未经验证的 WordPress 嵌入功能,这意味着在 WordPress 网站上尝试嵌入 Facebook 和 Instagram 内容时,页面将无法正常显示。这一变化的核心在于 Facebook 正在逐步淘汰传统的 oEmbed 端点,并要求所有嵌入请求必须通过 Facebook 进行身份验证。由于 Facebook 已收购 Instagram,这一新政策同样适用于 Instagram 的 oEmbed 端点。本文将深入探讨 WordPress 如何使用 Facebook 和 Instagram 的 oEmbed 端点,详细解析更新内容,并提供切实可行的解决方案,帮助您确保嵌入内容功能恢复正常。
WordPress 如何利用 oEmbed 协议嵌入内容
oEmbed 是一种强大的协议,允许网站通过简单的 URL 就能嵌入其他第三方平台的内容,无需手动复制粘贴复杂的 HTML 代码。WordPress 充分利用了这一协议,自动将视频、图片等资源转化为嵌入式内容,并提供实时预览功能。只需在内容区域粘贴资源链接,WordPress 即可自动将其转换为嵌入式格式并展示。oEmbed 协议是 WordPress 嵌入各类内容(包括社交媒体平台的视频、图片、更新等)的关键技术支撑。
WordPress 默认支持的 oEmbed 提供商
虽然 WordPress 支持嵌入任何已注册的 oEmbed 提供商的经过净化的 iframe 内容,但出于安全考虑,默认情况下仅嵌入部分经认证的 oEmbed 提供商内容。WordPress 信任的 oEmbed 提供商列表涵盖了大多数主流的内容托管和社交平台,如 Imgur、Facebook、Instagram、Tumblr、YouTube、Vimeo 等。这些提供商能够嵌入视频、iframe、JavaScript 甚至随机 HTML 等多种类型的内容。
Facebook 和 Instagram 传统 oEmbed 端点详解
Facebook 和 Instagram 的 oEmbed 端点是 WordPress 网站嵌入这两大社交平台内容的核心机制。通过 Facebook oEmbed 端点,WordPress 不仅能够嵌入主要内容,还能获取丰富的元数据,包括页面名称和徽标、发布日期和时间、缩略图、点赞数、评论数、分享数以及来源 URL 等信息。同样,嵌入 Instagram 内容时,用户不仅能看到图片,还能获取相关的重要元数据。
Facebook 和 Instagram 新的 oEmbed 端点要求
自 2020 年 10 月 24 日起,Facebook 正式淘汰了传统的 oEmbed 端点,并推出了全新的身份验证要求。开发人员在通过 UID、FB OEmbeds 和 IG OEmbeds 查询图形 API 的用户配置文件图片时,必须使用用户、应用程序或客户端令牌。这一变化意味着 WordPress 默认的嵌入功能将不再适用,必须采取新的解决方案。
新的 Facebook oEmbed API 的具体要求
与开放 Web API 的 oEmbed 不同,新的 Facebook oEmbed API 对嵌入请求提出了严格的要求:首先,您需要拥有一个 Facebook for Developer 账户;其次,必须注册一个 Facebook 应用程序以生成唯一的应用程序 ID;接着,为已注册的应用程序启用 oEmbed 产品;然后,生成应用程序访问令牌或客户端访问令牌;最后,将 Facebook 应用程序设置为实时模式。
WordPress 对 Facebook 和 Instagram oEmbed 端点的更新
为了适应 Facebook 的新要求,WordPress 已删除 Facebook 和 Instagram 作为可信的 oEmbed 来源。这一变化在 Gutenberg 插件中尤为明显,自 Gutenberg 9.0 版本起已完全移除对这两大平台的嵌入支持。尽管如此,WordPress 会将 oEmbed 响应缓存到其数据库中的 post meta 或隐藏的 oembed_cache 帖子类型下(目前仅用于小工具)。因此,在 2020 年 10 月 24 日截止日期之前添加的任何 Facebook 或 Instagram 嵌入,即使在废弃日期之后仍会继续存在,除非您手动从数据库中删除。
2020 年 10 月 24 日之后如何嵌入 Facebook 和 Instagram 内容
在 Facebook 和 Instagram 传统 oEmbed 端点废弃后,尝试嵌入其内容时,您和您的用户可能会收到 HTTP 400 错误。Facebook 为传统 oEmbed 端点添加了一个参数来模拟错误,测试嵌入尝试在废弃日期之后的显示效果。测试结果显示,使用传统 Facebook oEmbed 端点的嵌入会以小段摘录(最多 120 个字符)的形式出现在块引号中,并包含作者和原始来源的链接,除此之外再无其他内容。相比之下,Instagram 的后备嵌入效果稍好,嵌入结构基本保持不变。但请注意,这只是一个临时解决方案,一旦 WordPress 从核心中移除 Facebook 和 Instagram oEmbed 端点,传统 oEmbed 端点将不再适用,必须遵守 Facebook 的新要求。
如何修复 WordPress 中的 Facebook 和 Instagram oEmbed 问题
使用 Ayesh Karunaratne 提供的免费 oEmbed Plus 插件是恢复 Facebook 和 Instagram 嵌入的最简单方法。该插件能够帮助您实现新的 Facebook oEmbed 端点,并在区块编辑器中重新启用 Facebook 和 Instagram 嵌入功能。
oEmbed Plus 插件的安装与配置步骤
要开始使用 oEmbed Plus 插件,首先需要安装并激活该插件。请注意,oEmbed Plus 需要 PHP 7.3 或更高版本才能运行,如果您当前的 WordPress 托管不支持 PHP 7.3 或更高版本,我们强烈建议您寻找新的托管服务。
接下来,如果您还没有 Facebook for Developers 账户,请立即创建一个。然后,创建一个应用程序,例如命名为“WordPress Site”,您也可以根据自己的喜好命名。在 Facebook for Developers 门户中创建应用程序后,会自动生成一个 App ID。进入应用程序控制面板下的 Settings → Basic 面板,查看 App ID 和 App Secret,并记下这两个值,因为稍后会用到它们。
在 Facebook 开发者门户中,您还需要设置隐私政策 URL,这是使应用程序上线的必要条件。建议使用适当的隐私政策,以避免应用程序被列入黑名单。默认情况下,oEmbed 产品会自动启用,因此无需额外操作。
接下来,进入 WordPress 面板中的设置 → 撰写界面,搜索 Facebook and Instagram Embed Settings 部分。在此,输入您之前记下的 App ID 和 App Secret 值。您也可以在 wp-config.php 文件中添加 App ID 和 App Secret,以下是您需要使用的代码片段:
“`php
define(‘OEMBED_PLUS_FACEBOOK_APP_ID’, ‘7168…app.id…789’);
define(‘OEMBED_PLUS_FACEBOOK_SECRET’, ’20e5…app.secret…890xyz’);
“`
别忘了把上面显示的值改成您的实际值!完成后,保存文件。如果您编辑 wp-config.php 文件来配置 oEmbed Plus,它会自动禁用 WordPress 仪表盘中的 App ID 和 App Secret 表单字段,从而对其他用户保密您的应用程序凭据。
至此,配置过程基本完成!所有新的 Facebook 和 Instagram 嵌入现在都使用新的身份验证 API 在 WordPress 网站中嵌入内容。其他专门的社交媒体插件,如 Instagram Feed 和 Social Post Feed,也增加了对新 Facebook oEmbed 端点的支持。不过,这些插件通常捆绑了许多功能,因此对于您的网站来说,它们可能是不必要的臃肿。不过,如果您已经在使用它们,那么您可以查看一下是否有相关更新。
目前,Facebook 对其新 API 的速率限制比较宽松,允许您每天最多发出 500 万个请求。由于 WordPress 会在数据库中缓存 oEmbed API 的响应,因此除了第一次请求之外,嵌入不会触发任何其他请求。更多信息,请参阅 Facebook 更新的 oEmbed 文档。
总结
WordPress 作为当今最流行的内容管理系统,与 Facebook 和 Instagram 这两大社交平台的高使用率相结合,使得这一变化可能影响数百万个网站。在 WordPress 中嵌入社交媒体内容能够为网站访问者提供更独特的体验。从 2020 年 10 月 24 日开始,许多用户发现嵌入 Facebook 和 Instagram 内容时遇到了挫折。希望本文能帮助您解决 WordPress 中的 Facebook oEmbed 问题。如果您仍然面临 Facebook 和 Instagram 嵌入问题,请在评论中告诉我们!