Хорошо, я отвечу на поднятые вами вопросы по отдельности. Я понимаю, почему вы связываете их между собой, но, надеюсь, вы увидите, почему это разные проблемы.
HTML-сущности в уведомлениях по электронной почте в обычном тексте
самым лучшим вариантом было бы, чтобы электронные письма были составными (multipart), с чистым текстом в формате
text/plainи отдельнымtext/html
На самом деле, так сейчас и работают уведомления Discourse по электронной почте. Если вы посмотрите на «оригинал» уведомления Discourse по электронной почте, то увидите, что там есть текстовая и HTML-версия.
Похоже, вы имеете в виду следующее, хотя я всё ещё не до конца уверен в этом: вы получаете HTML-сущности в текстовой версии уведомлений Discourse по электронной почте, в результате чего в теле письма видны сами HTML-сущности при просмотре в почтовом клиенте, не поддерживающем HTML. Не так ли? Не могли бы вы прислать скриншот этого из почтового клиента (без поддержки HTML)?
Если это так, то это проблема, специфичная для генерации и форматирования контента в письмах Discourse, и её лучше вынести в более узкоспециализированную тему в разделе Support или Contribute > Bug.
HTML в постах Discourse
Вы поднимаете актуальный вопрос, но с технической точки зрения проблема заключается в том, как Discourse в целом подходит к импортируемому контенту. По умолчанию для импортируемого контента используется HTML, а не markdown.
Эту же ситуацию можно наблюдать в других контекстах, например, в плагине RSS Polling, который, как и плагин WP Discourse, импортирует HTML в содержимое постов. Обратите также внимание, что настройка сайта embed support markdown по умолчанию отключена, как и другие настройки, связанные с вставкой HTML в посты (например, allowed embed selectors).
Я лишь частично догадываюсь, но наиболее вероятной причиной такого стратегического решения в первые дни работы Discourse с импортируемым контентом стало сочетание простоты и сохранения целостности данных, то есть конвертация из HTML в markdown будет неидеальной. Есть одно ключевое исключение из этого правила, о котором я упомяну ниже.
Плагин WP Discourse мог бы попытаться преобразовать HTML постов WordPress в markdown перед отправкой их в Discourse. Да, существуют существующие PHP-библиотеки для конвертации HTML в markdown, но при преобразовании языка разметки, особенно с учётом различных вариантов markdown, всё всегда сложнее.
Действительно, попытка плагина WP Discourse самостоятельно обрабатывать конвертацию была бы ошибочной, учитывая, что в Discourse уже есть собственный конвертер HtmlToMarkdown. В настоящее время этот конвертер обрабатывает преобразование HTML в markdown для писем, импортируемых в Discourse. Если HTML постов из WordPress должен быть преобразован в markdown Discourse, эту задачу должен решать именно этот конвертер.
В настоящее время плагин WP Discourse использует API Discourse для публикации постов, а именно конечную точку /posts. Таким образом, по сути, вы говорите, что хотите добавить поддержку конвертера HtmlToMarkdown в конечную точку Discourse /posts (например, в качестве необязательного параметра запроса). Вы можете выступить за это, и если эта функция будет реализована, плагин WP Discourse будет использовать её как необязательную настройку.