@Canapin 你好
关于这个问题,这里有一个最新进展。
问题出现在以下情况:
- 你在 wp-discourse 中启用了“完整帖子内容”设置
- 你在 WordPress 中创建了一个帖子,且在插入表情符号之前至少有一行内容。
首先,能否请你确认一下你在这个案例中是否确实是这样操作的(特别是“完整帖子内容”设置)?
在这些情况下,wp-discourse 插件会将 HTML 发送到 Discourse,作为话题嵌入导入。当 Discourse 尝试在创建帖子时处理 HTML 时,可能会出现一些不同的问题,包括这个问题。例如,另一个相关问题是:https://meta.discourse.org/t/fix-broken-images-for-posts-created-by-the-wp-discourse-and-rss-plugins/160773。
从技术角度来看(我知道你懂技术 ;)),如果你尝试使用相关的 Discourse Ruby 类来解析包含 Unicode 表情符号的 HTML 字符串,就能直接看到这个问题的表现。
问题的技术细节
rails c
PrettyText.cook("<p>This is the sentence before the emojis</p><div>🦊🦊🦊🦊</div>")
=> "<p>This is the sentence before the emojis</p><div>🦊🦊🦊🦊</div>"
对比
rails c
PrettyText.cook("🦊🦊🦊🦊")
=> "<p><img src=\"/images/emoji/twitter/fox_face.png?v=9\" title=\":fox_face:\" class=\"emoji\" alt=\":fox_face:\"><img src=\"/images/emoji/twitter/fox_face.png?v=9\" title=\":fox_face:\" class=\"emoji\" alt=\":fox_face:\"><img src=\"/images/emoji/twitter/fox_face.png?v=9\" title=\":fox_face:\" class=\"emoji\" alt=\":fox_face:\"><img src=\"/images/emoji/twitter/fox_face.png?v=9\" title=\":fox_face:\" class=\"emoji\" alt=\":fox_face:\"></p>"
那么我们打算怎么做?
一般来说,WordPress 完整帖子 HTML 到 Discourse 帖子转换过程中出现的一些问题是意料之中的。Discourse 上保存的 WordPress 帖子记录,本质上就是该帖子的记录。
不过,@simon 和我正在积极改进 wp-discourse 和 Discourse 本身的处理流程,并进行了适当的优先级排序。在这之前,我们会先专注于其他几件事(例如上面提到的图片损坏问题)。因此,针对这个问题的官方修复还需要你稍等一段时间。