Отладка проблемы: публикация пользовательского типа записи происходит пустой

Я добавляю ещё один блок IF для другого типа пользовательского поста по адресу WP Discourse: advanced custom filter for discourse_publish_format_html - #12 by Kayla … это тот же тип поста, который я хотел ограничить конкретной темой на Discourse и автоматически публиковать согласно моей недавней теме Filtering the available categories for a custom post type. Посты автоматически публикуются в нужной теме, но пользовательские поля, которые я пытаюсь включить в discourse_publish_format_html, приходят пустыми. Я четырежды проверил все имена полей, и, похоже, в Discourse передаются всё, кроме самих значений полей.

Интересно, может ли одна из этих причин быть виновником?

  1. CPT создан в WordPress с помощью плагина Gravity Forms Advanced Post Creation Add-On.
  2. К CPT применён Toolset Access, поэтому только редакторы могут видеть эти посты; статус WP — опубликовано.
  3. CPT публикуется в приватную категорию Discourse.

В Discourse передаются только заголовок поста/темы, {author} и {blogurl}. Возможно, ключ в том, что {excerpt} также возвращает пустое значение, как и пользовательские поля?

Обновление: полное отключение доступа к Toolset и/или создание записи через WordPress вместо Gravity Form не устранило проблему с пустыми пользовательскими полями. С другой стороны, {excerpt} начал передаваться корректно.

Для уточнения: Toolset Access, похоже, не влияет на это отличие с {excerpt}.

Если я создаю запись через админку WordPress, {excerpt} отображается (запись использует редактор блоков). {excerpt} публикуется как пустой, если запись создана через Gravity Form (который создает «классический» блок для удержания поля WYSIWYG).

Пользовательские поля (однострочное, многострочное и числовое) по-прежнему возвращают пустое значение, независимо от способа создания записи.

После публикации сообщения видите ли вы в боковой панели редактора Discourse уведомление, похожее на это?

Если сообщение об «успехе» не отображается, но сообщение было опубликовано, то проблема в конфигурации пользовательского типа сообщения.

Если сообщение об «успехе» отображается, пользовательские поля должны быть доступны как метаданные сообщения, которые можно получить с помощью get_post_meta( $post_id, 'your_meta_key_name', true );. Самый простой способ понять, что происходит, — записать информацию в файл debug.log из вашей функции cosmos_custom_publish_format_html.

На этой неделе я отсутствую на работе, поэтому могу отвечать на вопросы медленнее, чем обычно.

Наконец, я сузил круг поиска: проблема, похоже, кроется в опции автоматической публикации (это тоже новый фактор, который был упущен). Если я снимаю эту галочку, публикую пост в WordPress, а затем публикую его в Discourse, пользовательские поля передаются в Discourse и отображаются как положено. Или, если я позволяю произойти автоматической публикации, поля появятся в Discourse после нажатия кнопки «Обновить тему Discourse» в WordPress. Похоже, что при автоматической публикации пост публикуется до того, как данные в пользовательских полях будут корректно сохранены в WordPress.