У меня есть существующая запись в WordPress, которая ранее также публиковалась на форуме.
В какой-то момент при каждом обновлении записи нажатием на ссылку save я получаю письмо со следующим сообщением об ошибке:
Ошибка публикации в Discourse
Не удалось опубликовать запись в Discourse с вашего сайта ...
...
Причина ошибки:
Discourse вернул ошибочный ответ.
Embed url wird bereits verwendet (переводится как «уже используется»)
Я отвязал запись от Discourse. Также я удалил запись на форуме. Тем не менее ошибка продолжает появляться при каждом сохранении записи. Кроме того, при попытке опубликовать запись как новую тему появляется та же ошибка.
В плагине была ошибка, из-за которой он пытался повторно опубликовать посты в Discourse после их отвязки в WordPress, если включена настройка «Автоматическая публикация» и посты публикуются через редактор блоков. Публикация поста в Discourse завершалась неудачей, так как URL встраивания уже использовался в Discourse. Я исправил эту проблему вчера, но исправление действует только для недавно отвязанных постов. Я придумаю решение, которое позволит исправить проблему и для постов, отвязанных ранее.
При отвязке постов плагин не удаляет embed_url темы в Discourse. Это означает, что если пост отвязать, а затем повторно опубликовать в Discourse, публикация завершится ошибкой «Embed url is already being used». Я исправлю это.
Если вы удалили соответствующую тему в Discourse, то, вероятно, сможете повторно опубликовать пост без ошибок. Я проверю, чтобы при удалении темы embed_url удалялся и в Discourse.
Я обновлю плагин в конце этой недели или в выходные. Это обновление должно устранить проблемы, с которыми вы столкнулись при работе с отвязанными постами.
Чтобы избежать появления сообщения об ошибке при обновлении поста в WordPress, который был отвязан от Discourse, добавьте пользовательское поле с именем wpdc_auto_publish_overridden и установите его значение в 1.
Я только что загрузил версию 2.0.4 плагина WP Discourse в репозиторий WordPress. Она решит проблему с постами, которые были разорваны связь с Discourse, когда сайт использовал версию плагина ниже 2.0.3. Для таких постов при первом обновлении разорванного поста вы увидите сообщение об ошибке «Embed url has already been taken» (URL встраивания уже занят). После первоначального обновления это сообщение об ошибке больше не будет появляться (и вы не получите письмо об ошибке публикации). Это не идеальное решение, но это лучший способ устранить данную проблему.
Если вы попытаетесь опубликовать пост в Discourse, когда уже существует тема Discourse, использующая её URL встраивания, вы получите ошибку. Если вы удалите тему в Discourse, использующую этот URL встраивания, вы сможете повторно опубликовать тему. Удалению темы встраивания (Topic Embed), связанной с постом WordPress, в системе Discourse требуется некоторое время. Мне всё ещё нужно подтвердить, что определяет продолжительность этого периода. Дайте знать, если у вас всё ещё возникают проблемы с этим.
В идеале, когда пост WordPress разорван с темой Discourse, связанный с постом embed_url должен удаляться в Discourse. К сожалению, в настоящее время невозможно удалить embed_url темы через API Discourse. Возможно, это станет возможным в будущем. Более простое изменение, которое помогло бы плагину WP Discourse, — это чтобы Discourse возвращал topic_id при возврате сообщения об ошибке «Embed url has already been taken». Тогда плагин WP Discourse мог бы сообщать пользователям, какая именно тема в Discourse вызывает проблему.