Комментарии Discourse не отображаются на блоге WordPress (версия 2025)

Продолжение обсуждения из комментарии Discourse не отображаются в блоге WordPress:

Привет. Я установил свежую копию Discourse 3.4.0 (4abee26a32) и WordPress 6.7.2 на свой локальный ПК для тестирования, но не могу добиться синхронизации комментариев из Discourse в WordPress (хотя начальная публикация синхронизируется из WordPress в Discourse). Моя проблема, кажется, очень похожа на гораздо более старый отчет, ссылку на который я привел выше. Неужели это регрессия?

Я включил все виды логирования, но в логах моего экземпляра WordPress вижу только следующее:

[2025-02-26 21:24:55] connection.INFO: check_connection_status.successful_connection  
[2025-02-26 21:24:55] connection.INFO: check_connection_status.valid_scopes  
[2025-02-26 21:28:49] publish.INFO: create_post.post_success {"wp_title":"Это тест","wp_author_id":"1","wp_post_id":7} 
[2025-02-26 21:28:49] publish.INFO: create_post.body_valid {"wp_title":"Это тест","wp_author_id":"1","wp_post_id":7} 
[2025-02-26 21:28:49] publish.INFO: create_post.after_publish {"post_id":7,"remote_post_type":"create_post","discourse_post_id":"34","discourse_topic_id":"16","discourse_permalink":"https://discourse.cs.siue.edu/t/this-is-a-test/16"} 
[2025-02-26 21:28:49] webhook_topic.INFO: update_topic_content.update_post_metadata_success {"post_ids":"7"} 
[2025-02-26 21:29:27] webhook_topic.INFO: update_topic_content.update_post_metadata_success {"post_ids":"7"} 
[2025-02-26 21:53:39] webhook_topic.INFO: update_topic_content.update_post_metadata_success {"post_ids":"7"} 

А в разделе комментариев моей публикации WordPress я вижу только это:

Счётчик ответов увеличивается сразу, но сами комментарии я не вижу. Также в системных логах по адресу /var/log/php-fpm/www-error.log я не вижу никаких ошибок.

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

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

  1. Какую тему вы используете?
  2. Является ли она темой с поддержкой блоков?
  3. Настраивали ли вы тему?
  4. Какие настройки включены для плагина WP Discourse (возможно, стоит поделиться файлом meta из логов).

Когда-то включение комментариев в WordPress действительно приводило к этому. Это было как минимум год назад, и я так и не проверил, изменилось ли это поведение или зависело ли оно от темы.

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

Я мог бы, но это не было проблемой после того, как я отключил комментарии в WordPress. Проблема ОП в том, что комментарии в WordPress перегружают Discourse. И есть простое решение — этот пост никогда не связывается с Discourse :smirking_face:

Понятно. Похоже, ваша проблема отличается от проблемы @Gregory_Bartholomew. Давайте попробуем уточнить детали его настройки и разобраться в сути его проблемы. Каждую проблему нужно рассматривать отдельно.

Что ж, у меня нет никаких текущих проблем, потому что в любой ситуации я не позволяю использовать нативные комментарии WordPress. Discourse отлично справляется с этим. Мои мысли были лишь идеей слабого решения, что привело к проблемам с конфигурацией :man_shrugging:

Вы имеете в виду, что мне нужно каким-то образом отключить встроенную систему комментариев WordPress?


Сейчас используется стандартная тема twentytwentyfive.

Да, это так. Также (но, вероятно, это не связано с проблемой) в стандартной теме была небольшая ошибка, из-за которой мне пришлось загрузить и заново сохранить файл index.html. Проблема и способ её обхода описаны здесь.

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

Конечно, вот вывод meta со страницы логов.

### Этот файл включается в загрузки логов ###

### Сервер ###

WordPress - 6.7.2
PHP - 8.3.17
MySQL - 10.11.10

### Активные плагины ###

Fedora SSR Endpoint - 1.3.0
WP-Discourse - 2.5.6

### Настройки WP Discourse (секретные данные исключены) ###

connection-logs - 1
display-subcategories - 0
allow-tags - 0
max-tags - 5
publish-as-unlisted - 0
full-post-content - 0
custom-excerpt-length - 55
add-featured-link - 0
auto-publish - 1
force-publish - 0
force-publish-max-age - 0
publish-failure-notice - 0
auto-track - 1
allowed_post_types - post
exclude_tags - 
hide-discourse-name-field - 0
discourse-username-editable - 0
direct-db-publication-flags - 0
verbose-publication-logs - 1
enable-discourse-comments - 1
comment-type - display-comments
ajax-load - 0
load-comment-css - 0
discourse-new-tab - 0
hide-wordpress-comments - 0
show-existing-comments - 0
max-comments - 5
min-replies - 1
min-score - 0
min-trust-level - 1
bypass-trust-level-score - 50
only-show-moderator-liked - 0
custom-datetime-format - 
cache-html - 0
clear-cached-comment-html - 0
verbose-comment-logs - 1
use-discourse-webhook - 1
webhook-match-old-topics - 0
use-discourse-user-webhook - 0
webhook-match-user-email - 0
verbose-webhook-logs - 1
enable-sso - 0
auto-create-sso-user - 0
real-name-as-discourse-name - 0
force-avatar-update - 0
redirect-without-login - 0
sso-client-enabled - 0
sso-client-login-form-change - 0
sso-client-sync-by-email - 0
sso-client-disable-create-user - 0
sso-client-sync-logout - 0
logs-enabled - 1

Одна неточность, которую я заметил в выводе meta: я использую не “MySQL”, а его форк “MariaDB” (mariadb-server-10.11.10-1.fc41.x86_64). Кроме того, у меня установлен пакет php-mysqlnd (php-mysqlnd-8.3.17-1.fc41.x86_64).

Спасибо за эту деталь, @Gregory_Bartholomew. Поскольку тема поддерживает блоки, вы пробовали использовать блок WP Discourse Comments?

Да, я видел это видео и уже установил флажок вверху:

image

Итак, просто для подтверждения: вы перешли в Внешний вид > Редактор, открыли Шаблон отдельной записи и добавили блок WP Discourse в этот шаблон?

Нет, я не помню, чтобы делал что-то подобное. Наверное, я пропустил это в видео. Попробую сейчас. Спасибо!

Что ж, всё выглядело многообещающе, но когда я нажал «Посмотреть сайт», чтобы вернуться на главную страницу индекса, всё вылетело. :confused:

Из лога php-fpm:

[27-Feb-2025 15:21:37 UTC] PHP Fatal error:  Uncaught Error: Call to undefined function WPDiscourse\Shared\mb_convert_encoding() in /wordpress/wp-content/plugins/wp-discourse/lib/template-functions.php:335
Stack trace:
#0 /wordpress/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php(136): WPDiscourse\DiscourseCommentFormatter\DiscourseCommentFormatter->fix_avatars_in_quotes()
#1 /wordpress/wp-content/plugins/wp-discourse/lib/discourse-comment.php(312): WPDiscourse\DiscourseCommentFormatter\DiscourseCommentFormatter->format()
#2 /wordpress/wp-content/plugins/wp-discourse/blocks/comments/comments.php(34): WPDiscourse\DiscourseComment\DiscourseComment->comments_template()
#3 /wordpress/wp-includes/class-wp-block.php(537): render_block_wpdc_comments()
#4 /wordpress/wp-includes/class-wp-block.php(517): WP_Block->render()
#5 /wordpress/wp-includes/class-wp-block.php(517): WP_Block->render()
#6 /wordpress/wp-includes/blocks/post-template.php(123): WP_Block->render()
#7 /wordpress/wp-includes/class-wp-block.php(537): render_block_core_post_template()
#8 /wordpress/wp-includes/class-wp-block.php(517): WP_Block->render()
#9 /wordpress/wp-includes/class-wp-block.php(517): WP_Block->render()
#10 /wordpress/wp-includes/blocks.php(2191): WP_Block->render()
#11 /wordpress/wp-includes/blocks.php(2243): render_block()
#12 /wordpress/wp-includes/block-template.php(263): do_blocks()
#13 /wordpress/wp-includes/template-canvas.php(12): get_the_block_template_html()
#14 /wordpress/wp-includes/template-loader.php(106): include('...')
#15 /wordpress/wp-blog-header.php(19): require_once('...')
#16 /wordpress/index.php(17): require('...')
#17 {main}
  thrown in /wordpress/wp-content/plugins/wp-discourse/lib/template-functions.php on line 335

Edit1: Там указано, что функция mb_convert_encoding() не определена. Может, мне просто нужно установить отсутствующий пакет PHP?

Edit2: Да, всё было именно так. Мне нужно было установить php-mbstring. Всё теперь, кажется, работает. Спасибо!

Одна небольшая проблема, которую я всё ещё наблюдаю, заключается в том, что эмодзи и аватары, похоже, не отображаются:

Полагаю, мне ещё нужно что-то настроить?

Сторона Discourse: мой аватар — просто буква в кружке по умолчанию:

Кроме того, эмодзи тоже, кажется, не отображается корректно на стороне Discourse, но я менее обеспокоен этим, так как не являюсь администратором продакшн-инстанса Discourse, который в конечном итоге планирую использовать. :slightly_smiling_face:

Редактирование: Забудьте о проблеме с аватарами. Похоже, это как минимум частично связано с тем, как настроена моя среда. Я указываю WordPress на порт 3000, но аватары разрешаются в http://localhost:4200/letter_avatar_proxy/v4/letter/.... Я, вероятно, всё равно отключу их.

Рад, что у вас всё получилось!