修复由 WP Discourse 和 RSS 插件创建的帖子中的损坏图片

该问题发生在以下形式的 HTML 被发布到 Discourse 时。这种情况最有可能通过 API 向 Discourse 发布主题时出现:

<p><img src="remote-image-domain/..."/></p>

任何包裹在图片标签外层的标签都会导致此问题,例如 <figure><img src="remote-image-domain/..."/></figure>

当 Discourse 尝试下载远程图片时,针对第一个示例会生成如下 Markdown:

<p>![](upload://6zqK52dO23i1JsYH2oyMU12U2ro.jpeg)</p>

这将导致图片无法显示。可以通过手动编辑 Discourse 帖子将其修复为:

<p>

![](upload://6zqK52dO23i1JsYH2oyMU12U2ro.jpeg)
</p>

但更简单的解决方法是通过站点设置 disabled image download domains 禁止 Discourse 下载远程图片。

对于通过 WP Discourse 插件配合区块编辑器(Block Editor)发布的帖子,插件会在发布到 Discourse 之前尝试通过以下代码处理帖子以解决此问题:

或许可以为经典编辑器(Classic Editor)实施类似的修复方案,但由于经典编辑器中无法使用 WordPress 的 parse_blocks 函数,修复方案会更加复杂。我希望最终可以通过对 Discourse 核心代码的修改来解决此问题。

3 个赞