Я с радостью предоставил бы больше подробностей, но, к сожалению, у меня есть только максимально бесполезное сообщение об ошибке, с которым можно работать:
Произошла ошибка при публикации этого сообщения на Discourse.
Ничего нет ни в каких логах ошибок, которые я могу увидеть ни на сайте, ни на Discourse.
Я могу дать ссылку на существующую тему, но это почти не помогает, так же как и прямое обновление метаданных сообщения.
Неужели я упустил какой-то переключатель отладки в настройках? Или есть какой-то другой способ получить полезное сообщение об ошибке?
Извините за поздний ответ. Я слежу за категорией Support > WordPress, но, насколько я знаю, уведомление об этой теме мне не пришло.
Самый простой способ получить подробное сообщение об ошибке — установить плагин Query Monitor – WordPress plugin | WordPress.org English (Canada), а затем попробовать опубликовать пост на Discourse. Плагин WP Discourse раньше сохранял все ошибки в файл журнала, но перестал это делать, так как это противоречит рекомендациям WordPress.
Возникает ли у вас ошибка при попытке опубликовать любой пост на Discourse, или проблема наблюдается только с конкретным постом?
Кажется маловероятным, что причиной проблемы стало обновление до версии Discourse 2.6.0.beta1. Были ли внесены какие-либо изменения в ваш сайт WordPress примерно в то время, когда плагин перестал работать?
Стоит сгенерировать новый ключ API на странице «Администрирование / API» в Discourse. Убедитесь, что ключ является глобальным (разрешает все действия). Также проверьте, что имя пользователя для публикации правильно указано на вкладке настроек подключения WP Discourse. Поскольку вы можете ссылаться на существующие темы Discourse, но не можете публиковать новые, возможно, проблема связана с правами доступа API.
Ещё один момент, который стоит проверить: какие значения присваиваются пользовательским полям поста при попытке публикации из WordPress в Discourse. Если вы включите отображение пользовательских полей в редакторе, в его нижней части должно появиться что-то подобное:
Я тоже удивлён, но он действительно ничего не показывает. Если бы показывал, то это была бы ошибка 400 (ведь именно это указано в production.log), но её нет.
Обновление: пройдясь по коду, я вижу, что ошибки не будет — всё перехвачено; если включить отчёты по электронной почте (email, но без error_log()?), то выводится:
Причина сбоя:
От Discourse возвращён код ответа 400.
Неверный запрос
и всё.
Уже сделал это, разницы нет. Это был последний вариант — метка «последнее использование» обновилась на предыдущем ключе, когда я пытался опубликовать, так что я знал, что ключ не менялся, но решил попробовать.
publish_post_category: 23
update_discourse_topic: 0
wpdc_publishing_error: Bad Request
wpdc_unlisted_topic: 1
Вот и всё. И, на всякий случай, то же самое происходит, если не устанавливать «Опубликовать как скрытый», но с ожидаемыми различиями в мета-данных поста.
Не уверен, что может вызывать ответ 400. Попробуйте установить плагин Health Check & Troubleshooting – WordPress plugin | WordPress.org English (Canada) и проверьте, не сообщает ли он о каких-либо проблемах на вашем сайте WordPress. После активации этого плагина в разделе «Инструменты» панели управления WordPress появится запись «Состояние сайта». Перейдя по этой ссылке и открыв вкладку «Статус», вы, возможно, увидите полезные детали.
Плагин Health Check также позволяет временно отключать плагины только для вашей текущей сессии. Это может быть полезно, чтобы проверить, связана ли проблема с конфликтом с другим плагином. Если на вашем сайте установлены какие-либо плагины безопасности, стоит попробовать отключить их и посмотреть, решит ли это проблему.
К сожалению, я зашёл в тупик. Плагин Health Check ничего полезного не предложил (что неудивительно), а всё остальное работает идеально.
Я столкнулся с ошибкой CSRF при автоматизации отправки приглашений, и это обычно означает ошибку в коде; однако в данном случае плагин не менялся, поэтому мой вывод таков: версия 2.6.0.beta1 неработоспособна.
Я понимаю, что это непопулярный вывод, но пока это единственное, что у меня есть.
Редактировано: я использовал плагин Health Check, чтобы отключить все остальные плагины — разницы нет.