Здравствуйте,
Я обнаружил проблему на нашем сайте с плагином WP Discourse.
Суть в том, что после публикации статьи в блоге и успешного размещения её на форуме Discourse, если через неделю (или другое время) внести небольшие изменения в пост и обновить его, плагин WP Discourse пытается опубликовать его на форуме заново.
В результате я получаю письмо «Discourse Publishing Failure» с сообщением о том, что URL для встраивания уже занят.
Я также заметил это при обновлении очень старых постов в WordPress: они появляются в категории по умолчанию «Новости» на форуме Discourse, что сбивает читателей с толку.
Есть ли какие-то настройки, которые я упустил, чтобы избежать этого?
Большое спасибо!
Привет, @npm0912, не мог бы ты провести для меня тест?
Попробуй воспроизвести эту проблему, но перед внесением изменений (через неделю или за то нормальное время, которое обычно проходит) проверь статус поста в Discourse в панели инструментов WordPress справа на экране редактирования поста. Сообщите, что там отображается в момент, когда вы выполняете редактирование, а затем получите ли вы описанное вами поведение после редактирования.
Попытался обновить пост, но та же ошибка повторилась. Я также получил такое же письмо об ошибке.
Последняя ошибка из логов:
[2024-05-13 18:02:53] publish.ERROR: create_post.post_error {"wp_title":"Nextcloud exhibiting at global events in May 2024","wp_author_id":"9","wp_post_id":209030,"response_message":"Embed url has already been taken","http_code":422}
Разве на странице настроек не должна быть опция, отключающая повторную попытку публикации, если пост уже есть в Discourse?
Хорошо, это означает, что ваш экземпляр WordPress не позволяет плагину WP Discourse корректно сохранять поля мета-данных публикации, скорее всего, из-за другого плагина или темы на вашем сайте. Можете ли вы предоставить файл журнала WP Discourse? Он содержит список плагинов, что может указать на виновника.
Обычно плагин сохраняет детали публикации после первой публикации. У вас этого не происходит. Именно это нам и нужно выяснить
У вас есть несколько плагинов, которые могут быть причиной проблемы. В качестве первого шага, пожалуйста, включите эту настройку в разделе «Опубликование» (Publishing) настроек плагина WP Discourse.
Это изменит способ сохранения плагинами пользовательских полей и может повлиять на поведение в вашем случае. Скорее всего, это не исправит проблему, но может дать нам больше понимания. После включения настройки попробуйте воспроизвести те же условия.
После этого мы перейдём к отключению отдельных плагинов, чтобы попытаться изолировать проблему. Есть ли у вас тестовый сайт (staging site), то есть сайт с вашими темами и плагинами, но без реальных данных?
Я также добавлю более подробное логирование в логику публикации внутри плагина, чтобы помочь прояснить этот класс проблем (то есть хранение метаданных в WordPress после публикации на Discourse). Однако это займёт некоторое время, и в это время мы можем провести тесты, подобные описанным выше.
Я включил эту настройку, но проблема всё ещё сохраняется.
На самом деле мы используем тестовый сайт, и самое интересное, что, несмотря на то, что плагины, темы и файлы полностью идентичны, он ведёт себя иначе: после публикации тестовой записи она корректно отображается в Discourse, и если я возвращаюсь к той же записи, то в боковой панели настроек Discourse я больше не вижу ошибки «Embed url has already been taken». Вместо этого я вижу следующее:
Между ними есть небольшие различия. Вероятно, это не является причиной проблемы, но стоит сделать ваши тестовую и продакшн-версии идентичными, чтобы исключить эту возможность как здесь, так и при решении других проблем.
Помимо этого, рекомендую внимательно проверить настройки WP Rocket (например, действительно ли они совпадают на обоих сайтах). Хотя плагин хорошо справляется со своими задачами, WP Rocket часто становится причиной проблем с плагинами WordPress.
Вы правы. Я ещё раз проверил функцию db_version() внутри темы и действительно получил в результате 5.5.5. Но на странице «Состояние сайта» в админ-панели я вижу версию 10.6.16-MariaDB — такую же, которую мне назвали системные администраторы. То есть именно эту версию должно видеть и WordPress, верно?