Раньше работало отлично, теперь нельзя создать новую тему

Я с радостью предоставил бы больше подробностей, но, к сожалению, у меня есть только максимально бесполезное сообщение об ошибке, с которым можно работать:

Произошла ошибка при публикации этого сообщения на Discourse.

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

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

Неужели я упустил какой-то переключатель отладки в настройках? Или есть какой-то другой способ получить полезное сообщение об ошибке?

Привет @invisnet

Ты открывал консоль разработчика в браузере и проверял ошибки в JS-консоли?

Теперь — ничего примечательного, certainly ничего о Discourse.

После долгого копания в том, куда мне не следовало заглядывать, я получил сообщение об ошибке:

Невозможно проверить подлинность CSRF-токена.

Это сообщение почти так же полезно, как и исходное.

На основе этого я делаю следующие выводы:

  • Версия 2.6.0.beta1 сломана,
  • было ошибкой обновляться, так как, похоже, нет способа откатиться к версии 2.5.0,
  • модульные тесты для discourse и/или wp-discourse требуют доработки,
  • я в тупике, пока это не будет исправлено, так как, похоже, нет возможности вручную установить embed_url для темы.

Наверное, это какое-то решение…

Извините за поздний ответ. Я слежу за категорией Support > WordPress, но, насколько я знаю, уведомление об этой теме мне не пришло.

Самый простой способ получить подробное сообщение об ошибке — установить плагин Query Monitor – WordPress plugin | WordPress.org English (Canada), а затем попробовать опубликовать пост на Discourse. Плагин WP Discourse раньше сохранял все ошибки в файл журнала, но перестал это делать, так как это противоречит рекомендациям WordPress.

Возникает ли у вас ошибка при попытке опубликовать любой пост на Discourse, или проблема наблюдается только с конкретным постом?

Кажется маловероятным, что причиной проблемы стало обновление до версии Discourse 2.6.0.beta1. Были ли внесены какие-либо изменения в ваш сайт WordPress примерно в то время, когда плагин перестал работать?

Ошибка появляется только в production.log внутри Docker-контейнера — нигде больше в логах или консоли (я уже запускал Query Monitor).

С любой новой записью.

Только обновление плагина до версии 2.0.6. Однако проблема не в плагине — я перешёл по всем тегам в git, но это не помогло.

Удивительно, что плагин Query Monitor не показывает ошибку. Я ожидал увидеть что-то вроде этого, но с другим сообщением об ошибке:

Стоит сгенерировать новый ключ 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, чтобы отключить все остальные плагины — разницы нет.

Проблема сохраняется в версиях 2.6.0.beta2 и 2.1.2.