Я уже несколько месяцев использую плагин “WP Discourse”, и он всегда отлично работал со статьями, содержащими галерею и параграфы.
Я опубликовал в блоге статью, состоящую только из галереи примерно из 60 изображений, но она не отображается в связанной теме на Discourse. Вместо этого плагин извлек сначала текст плагина GDPR, а затем текст подвала.
Как мне это исправить? Нужно ли мне добавить какой-либо код в файл functions.php темы?
Правильно ли я понимаю, что проблема заключается именно в пункте 3? А именно: вы ожидаете увидеть изображения при нажатии на кнопку «Показать полное сообщение». Так ли это?
Да, всё верно. Для ранее опубликованных постов всё работало отлично: после нажатия кнопки “Показать полный пост” я вижу и галерею, и текст.
Я прикрепил здесь пример рабочего поста как в WordPress, так и в Discourse:
В этом посте есть фотографии в виде галереи и некоторый текст.
Если пост содержит только изображения (вставленные как галерея), Discourse отображает либо текст в футере, либо сообщение во всплывающем окне плагина “Moove GDPR Cookie Compilation”. Если я отключаю плагин GDPR, я вижу футер.
Если я вставляю изображения как “Фото” (блок Gutenberg), Discourse показывает изображение, но не галерею.
Разница в том, что в вашем случае в сообщении WordPress содержатся только изображения. В этом другом случае в сообщении есть ещё и текст. Возможно ли добавить текст перед изображениями в сообщении, с которым у вас возникла проблема?
Да, я бы предложил опубликовать пост заново с текстом и изображениями и посмотреть, поможет ли это. Если это не сработает, мы можем рассмотреть другие варианты.
Я только что удалил тему в Discourse и добавил текст до и после блока «Галерея» Gutenberg, но, к сожалению, это не помогло. Контент явно виден в сводке, но как только я нажимаю кнопку, он заменяется сообщением плагина GDPR.
Вот ссылка на новую тему:
Что мне теперь сделать, чтобы расследовать и решить проблему? Я также очистил кэш WordPress (LiteSpeed и Cloudflare).
Похоже, вы не создали новую запись в WordPress. Если вы повторно используете ту же запись в WordPress, кэшируется один и тот же превью-контент. Попробуйте создать новую запись в WordPress с теми же фотографиями, но с текстом в начале.
Основная проблема заключается в том, что извлечение контента с вашего сайта осуществляется с помощью библиотеки Readability, которая основана на алгоритме режима чтения Firefox.
Суть в том, что алгоритм Readability плохо справляется с контентом, насыщенным изображениями. Функция предварительного просмотра предназначена для постов, состоящих преимущественно из текста.
В принципе, да. Один из способов проверки — использовать режим чтения в Firefox для вашего поста в WordPress, чтобы увидеть, что, скорее всего, сгенерирует библиотека Readability.
Я заметил, что в настройках Discourse я могу найти только «allowed_embed_selectors».
Я изменил его, добавив CSS-классы из своей темы. Также я использовал несколько «трюков», чтобы повысить показатель читаемости, и это сработало!
Я добавил больше текста, альт-тексты для некоторых изображений и глобальный «обёртку» для постов, чтобы добавить тег <article>. На Discourse это работает отлично, даже если Firefox показывает панель GDPR как «читаемый» контент.
Теперь у меня вопрос. Можно ли расширить лайтбокс Discourse для изображений WordPress, импортированных в тему?
Я заметил, что комментарии WP-Discourse используют тег <article>, и час назад один из участников опубликовал комментарий, в результате чего парсер воспринял этот текст как основное содержание поста.
Мне пришлось отредактировать файл плагина, чтобы изменить тег, но я знаю, что при следующем обновлении эти изменения будут потеряны.
Можно ли навсегда исправить эту проблему с парсингом?
Принцип работы таков: HTML-предпросмотр в сообщении сохраняет точность исходного контента. Для этого потребуется кастомный плагин.
Основная проблема та же. Попытка сделать так, чтобы пост в WordPress, состоящий почти полностью из изображений, был идентичен (1:1) в WordPress и Discourse, не входит в задачи, для которых предназначено это программное обеспечение. Причина, по которой встроенные темы (то, что обеспечивает эту функцию на стороне Discourse) используют библиотеку Readability, заключается в том, что предполагается работа с контентом, предназначенным для чтения (то есть текстом).
Возможно создать надежную синхронизацию фотогалереи между WordPress и Discourse, однако для этого потребуется разработать кастомизации (плагин для WordPress и плагин для Discourse), работающие именно таким образом.