Ссылка на публикацию в Discourse для пользовательского типа записи исчезает

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

Функция публикации Discourse действительно создаёт тему для пользовательского типа записи, однако ссылка не отображается в wp-admin. Я проверил базу данных WordPress в разделе post_meta: ключ “discourse_permalink” для этой записи существует, но по какой-то причине ссылка не появляется.

Я создал пользовательский тип записи с помощью плагина Meta Box. Похоже, проблема связана именно с пользовательскими типами записей. Обычные записи WordPress работают корректно и ссылка в wp-admin отображается.

Спасибо!

Джейкоб Хилл

Привет, Джейкоб :slight_smile:

Можешь, пожалуйста, подтвердить несколько моментов для меня.

  1. Ваш тип записи выбран в настройке WP Discourse «Publishing» в разделе «Post Types to Publish»?

  2. Когда вы говорите «ссылка не появляется в wp-admin», вы имеете в виду, что ссылка не отображается здесь?

Привет, Ангус! Да, на оба твоих вопроса.

Что касается вопроса 2, система ведёт себя так, будто ссылки нет, и позволяет мне опубликовать новую запись или привязать её к теме. Если я публикую или привязываю, результат одинаковый — интерфейс из твоего скриншота не показывает ссылку, хотя она присутствует в БД в поле post_meta для этой записи.

Спасибо за помощь!

Хорошо, я попробую воспроизвести эту проблему позже на этой неделе.

Тем временем, если у вас есть логи PHP для вашего экземпляра, которые вы можете предоставить, это было бы полезно. Также проверьте логи WP Discourse на наличие каких-либо подсказок.

Привет, @angus, спасибо!

Я провёл дополнительное расследование по этой проблеме, но решения не нашёл, и логи, которые можно было бы найти, не были сгенерированы. Вот информация:

После публикации темы в Discourse в базе данных для этого поста отображается следующее, что выглядит правильно:

Тема в Discourse отображается корректно, но интерфейс редактирования поста в wp-admin ведёт себя так, будто это действие никогда не выполнялось, хотя записи в базе данных присутствуют:

При попытке связать тот же пост записи в базе данных обновляются, и появляется следующее сообщение, но после обновления страницы ссылка не отображается:

После связывания база данных выглядит так:

Непонятно, почему это не работает с пользовательскими типами записей. Как я уже говорил, для стандартных записей всё работает корректно.

Надеюсь, это поможет!

Джейк

Привет, @angus, просто хотел уточнить, есть ли какие-то новости по этому вопросу. :slight_smile: Спасибо!

Сейчас мне не удаётся воспроизвести эту проблему. Не могли бы вы отправить мне «metafile» из панели логов WP Discourse?

Привет, @angus, не мог бы ты подсказать, как получить для тебя метафайл?

Интересный момент: комментарии отображаются на фронтенде, значит ссылка, которая есть в базе данных, работает, однако в wp-admin она не показывается.

При загрузке журналов в архивированной папке будет содержаться метафайл. Вы можете отправить его мне в личные сообщения здесь.

Вы уверены, что для вашего экземпляра WordPress нет более широких логов? Мне кажется, что происходит какое-то исключение, которое мешает корректной работе логики боковой панели. Не могли бы вы попробовать следующее:

  1. При редактировании записи, где вы видите возникающую проблему
  2. Откройте консоль браузера (инструкции для разных браузеров)
  3. Обновите страницу и сделайте скриншот любых логов, появившихся в консоли браузера.

Привет, @angus! Извините за задержку. Я думал, что речь шла о логах в Discourse, но теперь понял, что вам нужны логи плагина WordPress. :slight_smile:

Я отправил вам файлы! На самом деле я протестировал отключение всех плагинов, кроме указанных ниже, и возврат к теме 2023, но проблема сохраняется. Логи, связанные с этой проблемой, отсутствуют, как и раньше.

Похоже, это проблема, связанная с пользовательским типом записи, возможно, специфичная для CPT, созданного MetaBox.

Ваша проблема не в плагине WP Discourse. Вам нужно включить поддержку custom-fields в коде, который регистрирует пользовательские типы записей Meta Box, которые вы используете. После этого боковая панель WP Discourse будет работать как положено.

your_prefix_register_post_type() {
  ...
  $args = [
     ...
     'supports' => ['title', 'editor', 'thumbnail', 'custom-fields']
  ]
}

Привет, @angus, это сработало, большое спасибо!! Я установил флажок «Настраиваемые поля» в настройках Meta Box CPT, и теперь ссылка отображается в редакторе wp-admin!

Огромное спасибо за помощь!