WordPress絵文字とDiscourse

こんにちは、

WP のデフォルト設定(もし存在する場合)について、絵文字に関するご質問です。
WP で絵文字を含むテキストを作成しました:

WordPress は自動的にそれらを SVG の Twitter 絵文字に変換します:

例として、最初の絵文字から生成された HTML コードは以下の通りです:

<span class="pq6dq46d tbxw36s4 knj5qynh kvgmc6g5 ditlmg2l oygrvhab nvdbi5me sf5mxxl7 gl3lb2sf hhz5lgdu"><img draggable="false" role="img" class="emoji" alt="👊" src="https://s.w.org/images/core/emoji/13.0.0/svg/1f44a.svg"></span>

投稿が Discourse に送信されると、HTML が少し変更されます:

<span class="pq6dq46d tbxw36s4 knj5qynh kvgmc6g5 ditlmg2l oygrvhab nvdbi5me sf5mxxl7 gl3lb2sf hhz5lgdu">&#x1f44a; </span>

これは、絵文字の HTML 実体参照が span 内に挿入されるためです。

その結果、見栄えの良い形式の投稿になりますが、絵文字はフォーラムの絵文字セットに変換されていません:

絵文字をフォーラムで選択されたセットを使用して表示させる方法はありますか?

これはプラグインではなく、Discourse 自体の問題かもしれません。

WordPress の標準的な絵文字処理を使用している場合、Unicode 絵文字を WordPress エディタにコピー&ペーストしているものと思われます。その場合、Discourse に送信される生の投稿コンテンツには Unicode 絵文字が含まれたままになります。通常、Discourse はそれらをフォーラムの絵文字セットに変換するはずです。確かに特定の条件下でこの問題を再現できます。

この件については、改めてご連絡いたします。

@Canapin へ、こんにちは :slight_smile: これに関する更新情報です。

この問題は、以下の条件が揃った際に発生します。

  1. wp-discourse で「フル投稿コンテンツ」設定を有効にしている
  2. WordPress で、絵文字の挿入前に少なくとも 1 行のコンテンツを含む投稿を作成している

まず、今回のケースでも上記の操作(特に「フル投稿コンテンツ」設定)を行っていただいているか、確認いただけますでしょうか。

このような状況では、wp-discourse プラグインが HTML を Discourse へ送信し、それがトピック埋め込みとしてインポートされます。Discourse が投稿作成時に HTML を処理する際、この問題を含めいくつかの異なる問題が発生する可能性があります。例えば、以下のような問題もあります:Fix broken images for posts created by the WP Discourse and RSS plugins

技術的な観点から(あなたが技術者であることは承知しています :wink: )、関連する 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 自体において、このプロセスを改善するために積極的に取り組んでおり、適切な優先順位付けを行っています。この問題については、まず上記の「画像破損問題」など、他のいくつかの事項に焦点を当てて対応を進める予定です。そのため、この問題の公式な修正については、もう少しお待ちいただく必要があります。

実際、最初の絵文字の前に HTML コードが含まれています(Wordpress はコンテンツを <p> タグで囲むため)。「投稿全文」は有効になっています。

ご情報ありがとうございます!

こんにちは、一点お知らせです。これへの対応は今年の6月の予定に含まれています。もしこれと密接に関連する問題をお持ちの方がいらっしゃいましたら、お知らせください。その際、併せて確認いたします。