Эмодзи 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>

Так как в span вставляется HTML-сущность эмодзи.

В результате получается красиво оформленный пост, но эмодзи не преобразуются в набор эмодзи форума:

Есть ли способ, чтобы эмодзи отображались с использованием выбранного набора эмодзи форума?

Это может быть проблема самого Discourse, а не плагина.

Если вы используете стандартную обработку эмодзи в WordPress, я предполагаю, что вы копируете и вставляете Unicode-эмодзи в редактор WordPress. В этом случае исходное содержимое поста, отправляемое в Discourse, будет включать только Unicode-эмодзи. Discourse обычно должен преобразовывать их в набор эмодзи форума. Действительно, мне удалось воспроизвести эту проблему при определённых условиях.

Я вернусь к вам с ответом по этому вопросу.

@Canapin Привет :slight_smile: Просто обновление по этому вопросу.

Проблема возникает, когда:

  1. Вы включили настройку «полное содержимое поста» в wp-discourse.
  2. Вы создали пост в WordPress, содержащий хотя бы одну строку текста до вставки эмодзи.

Сначала, не могли бы вы подтвердить, что в данном случае вы сделали именно так (особенно в части настройки «полное содержимое поста»)?

В таких обстоятельствах плагин wp-discourse отправляет HTML в Discourse, который импортируется как встраиваемая тема. При попытке Discourse обработать HTML во время создания поста могут возникнуть несколько проблем, включая эту. Например, ещё одна возникающая проблема описана здесь: Fix broken images for posts created by the WP Discourse and RSS plugins.

С технической точки зрения (поскольку, как я знаю, вы разбираетесь в технике :wink: ), вы можете увидеть проблему напрямую, если попробуете использовать соответствующий Ruby-класс Discourse для разбора 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:\"></p>"

Что же мы будем делать?

В целом, некоторые проблемы при конвертации полного HTML-содержимого постов WordPress в посты Discourse не являются неожиданными. Запись поста WordPress в Discourse — это просто запись этого поста.

Тем не менее, @simon и я активно работаем над улучшением этого процесса как в wp-discourse, так и в самом Discourse, с соответствующей приоритизацией. Мы сосредоточимся на нескольких других вещах в этом отношении (например, на проблеме с битыми изображениями, упомянутой выше), прежде чем перейдём к этой. Поэтому вам придётся немного подождать официального исправления именно этой проблемы.

Действительно, перед первым эмодзи присутствует HTML-код (так как WordPress оборачивает содержимое в теги <p>), и настройка «полное содержимое поста» включена.

Спасибо за информацию!

Привет, просто хочу отметить, что решение этого вопроса включено в мои планы на июнь этого года. Если у кого-то есть проблема, тесно связанная с этим, пожалуйста, дайте мне знать, и я рассмотрю её одновременно.