Миграция с wp-discourse-embed на WP Discourse — старые посты не отображаются

Почти пять лет мой блог работал с wp-discourse-embed от @techAPJ. Вот пример публикации:

Soya Chunks Masala Dry Recipe | A Little Bit of Spice и соответствующая тема на форуме: Soya Chunks Masala Dry - blog - comments

Мне удалось выполнить миграцию и настроить WP Discourse от @angus:

Однако теперь старые темы форума не отображаются как комментарии к записям блога. Приведённая выше запись в блоге — тому пример.

Думаю, требуется какая-то маппинг-настройка.

Как это можно интегрировать?

Вот как выглядят мои логи:

А вот последний лог:

[2024-04-03 01:42:27] webhook_topic.ERROR: update_topic_content.webhook_verification_error [“message”,“Discourse Webhook Request Error: signatures did not match.”]

Сырые логи здесь.

Здравствуйте,

О проблеме:

Эта ошибка означает, что значение опции Webhook Secret Key в WP-Discourse не совпадает с паролем, указанным в вашем вебхуке Discourse. Можете ли вы это проверить?

@simon поправит меня, если я ошибаюсь, но да: запись WP должна быть синхронизирована с темой Discourse. Для существующих тем у вас должна быть возможность привязать её к существующей теме Discourse:

.
После синхронизации комментарии должны быть получены.

Я не уверен, есть ли более простой способ; надеюсь, кто-то сможет дать более подробные разъяснения.

Вы правы по обоим вопросам.

@Jane_Jojo, попробуйте связать существующую тему в Discourse с соответствующим постом в WordPress, используя метод, показанный @Arkshine. Обратите внимание, что интерфейс немного различается в зависимости от того, используете ли вы классический редактор WordPress или новый блочный редактор.

Если связывание темы в Discourse с постом в WordPress работает, следующим шагом будет выяснение того, как связать все ваши существующие темы и посты. Сколько у вас старых постов? Если их слишком много для ручного связывания с Discourse, возможно, существует способ автоматизировать этот процесс.

Спасибо.

Итак, я сделал следующее.

При отправке ping я получаю код 200. Так что всё понятно.

Затем я сделал вот это:


Но пост не обновился.

Не упустил ли я что-то ещё? Логи не показывают никаких обновлений.

Обновление:
Когда я отправляю ping через вебхук Discourse,

В логах я вижу следующее:

[2024-04-03 21:38:14] webhook_topic.ERROR: update_topic_content.response_body_error

Используете ли вы плагин кэширования в WordPress?

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

Также, если это ещё не сделано, включение отладки для комментариев может помочь:

image

Сообщение об ошибке, которое вы видите, появляется, если вы используете функцию «ping» для вебхука. На стороне WordPress код ожидает, что в вебхуке, отправленном из Discourse, будет объект post. Если вы просто нажмете кнопку «ping», объект post не будет включен в полезную нагрузку. Попробуйте оставить комментарий в теме Discourse, связанной с WordPress, и проверьте, появится ли ошибка.

Чтобы комментарии Discourse отображались на вашем сайте WordPress:

  • убедитесь, что на WordPress включены комментарии для публикаций, которые вы публикуете в Discourse;
  • убедитесь, что включена опция «Включить комментарии Discourse»:

Если ранее комментарии на вашем сайте WordPress не были включены, возможно, не стоит активировать их сейчас для публикаций, которые еще не подключены к Discourse. Чтобы избежать отображения формы комментариев WordPress для таких публикаций, вы можете включить комментарии на всем сайте, а затем выбрать настройку «Удалить шаблон комментариев WordPress» на странице «Параметры комментариев WP Discourse»:

Дайте нам знать, если у вас все еще возникают проблемы.

Включил оба. Безрезультатно.


Страница обновлена, но в логах ничего не отображается.

Когда я делаю просмотр исходного кода страницы, я вижу в HTML множество ссылок на Discourse. Значит, система что-то пытается сделать…

Мои настройки раздела комментариев уже очень давно выглядят именно так.

Можете проверить, включены ли комментарии для поста, на который вы ссылаетесь в Discourse? Иногда опция «Обсуждение» не отображается на странице редактирования. Возможно, вам нужно выбрать её в меню «Параметры экрана», чтобы увидеть её:

Да, это было включено :frowning:

Хм, на странице я не вижу ничего, что указывало бы на загрузку шаблона комментариев. Ссылка на discourse-embed-js на вашем скриншоте относится не к плагину WP Discourse. Мне кажется, она связана со скриптом, который загружался плагином wp-discourse-embed. На самом деле он вызывает ошибку на вашем сайте:

Failed to load resource: the server responded with a status of 404 () discourse-embed.js

Также на странице присутствует <div id="discourse-comments"></div>, который добавлен плагином wp-discourse-embed, а не WP Discourse.

Я бы не включал настройку WP Discourse «Загружать комментарии через Ajax», пока вы не подтвердите наличие проблемы с кэшированными комментариями на сайте. Даже если такая проблема есть, шаблон комментариев должен отображаться.

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

Уверен, что мы сможем во всём разобраться :slight_smile:

Я просматривал историю изменений кода моей темы и заметил, что некоторое время назад я заменил весь код комментариев WordPress на комментарии Discourse.

Думаю, старый код всё ещё нужен, верно?

Я отвечаю по памяти, но, думаю, отредактированный файл comments.php не является причиной проблемы. Должно происходить следующее: вместо загрузки файла comments.php вашей темы плагин WP Discourse должен загружать собственный блок комментариев, когда из вашей темы вызывается функция comments_template().

Посмотрите в файле single.php вашей темы или в том файле, который используется для отображения записи, на которую вы ссылаетесь в Discourse. Проверьте, есть ли в нём вызов comments_template(). Он будет выглядеть примерно так:

if ( comments_open() || get_comments_number() ) :
	comments_template();
endif;

Именно вызов comments_template() должен запускать загрузку комментариев от WP Discourse.

Возможно, я ошибаюсь. Если это не поможет разобраться, я смогу посмотреть внимательнее.

Мне удалось решить проблему. Комментарии были отключены на уровне темы. Их включение решило вопрос.

Спасибо за подробные ответы.