即使取消帖子与 Discourse 的关联,仍出现错误消息“embed url already being used”

我有一篇现有的 WordPress 文章,它之前也发布到了论坛上。

不知从何时起,每次我点击“保存”链接更新该文章时,都会收到一封包含以下错误信息的邮件:

Discourse 发布失败

您的网站有一篇文章未能发布到 Discourse ...

...

失败原因:
Discourse 返回了错误的响应。
Embed url wird bereits verwendet(意为“已被使用”)

我已将该文章与 Discourse 解除关联,并删除了论坛中的帖子。然而,每次保存该文章时,错误仍然会出现。此外,尝试将文章作为新主题发布时,也会出现同样的错误。

插件中存在一个错误,导致在 WordPress 上取消关联文章后,若启用了“自动发布”设置且使用区块编辑器发布文章,插件仍会尝试将文章重新发布到 Discourse。由于嵌入 URL 已在 Discourse 上使用,发布到 Discourse 的操作会失败。我已于昨日修复了该问题,但该修复仅适用于新近取消关联的文章。我将继续开发一个解决方案,以修复此前已取消关联的文章的问题。

当文章取消关联时,插件并未移除 Discourse 上对应话题的 embed_url。这意味着,如果文章取消关联后再次发布到 Discourse,发布操作会因“嵌入 URL 已被使用”的错误而失败。我将修复此问题。

如果您已删除 Discourse 上关联的话题,则应可以无错误地将文章重新发布到 Discourse。我将检查并确保在删除话题时,Discourse 上的 embed_url 也会被移除。

我将于本周晚些时候或本周末更新插件。该更新将解决您遇到的与取消关联文章相关的问题。

谢谢你的详细解答!目前有什么手动解决方法吗?

为了防止在 WordPress 上更新已从 Discourse 取消链接的帖子时出现错误消息,请添加一个名为 wpdc_auto_publish_overridden 的帖子自定义字段,并将其值设置为 1

如果区块编辑器尚未启用自定义字段:

  1. 点击页面右上角的 区块编辑器设置(三个点),然后选择“选项”。
  2. “高级面板”部分 中选择“自定义字段”。

我刚刚将 WP Discourse 2.0.4 版本推送到 WordPress 仓库。该版本将解决因插件版本低于 2.0.3 而导致帖子与 Discourse 断开链接的问题。对于这些帖子,首次更新未链接的帖子时,您会看到“嵌入 URL 已被占用”的错误提示。完成首次更新后,您将不再看到该错误提示(也不会收到发布错误邮件)。这并非完美解决方案,但却是解决该问题的最佳方式。

如果您尝试将帖子发布到 Discourse,而该帖子对应的嵌入 URL 已被另一个 Discourse 主题使用,您将会收到错误提示。如果您删除了 Discourse 上使用该嵌入 URL 的主题,您应该能够重新发布该主题。Discourse 需要一些时间来删除与 WordPress 帖子关联的主题嵌入(Topic Embed)。我仍需确认这一时间周期由什么因素决定。如果您在此问题上仍有困难,请告诉我。

理想情况下,当 WordPress 帖子与 Discourse 主题断开链接时,Discourse 上与该帖子关联的 embed_url 应被删除。遗憾的是,目前无法通过 Discourse API 移除主题的 embed_url。未来或许可以实现这一功能。对 WP Discourse 插件而言,一个更小的改进是:当 Discourse 返回“嵌入 URL 已被占用”错误消息时,同时返回 topic_id。这样,WP Discourse 插件就能告知用户是哪个 Discourse 主题导致了该问题。