Вопрос о программной ссылке на существующую тему

Я использую фронтенд-формы для создания записей в WordPress, которые должны быть связаны с существующими темами Discourse.

Мой план: при добавлении или редактировании записи в WP вводить URL существующей темы в поле ACF.

Далее я бы использовал:

add_action('acf/save_post', 'my_acf_save_post', 25);

Внутри функции my_acf_save_post я бы выполнил:

protected function link_to_discourse_topic( $post_id, $topic_url )

Как показано здесь.

Правильно ли я понимаю направление?

Да, вы на верном пути. В общих чертах вам нужно сделать следующее:

  1. Получить детали темы из Discourse (если у вас их еще нет).
  2. Сохранить соответствующие детали в правильные поля метаданных поста.

Именно эти поля метаданных поста, которые вы видите в той функции, на которую вы ссылаетесь, создают связь.

Я также добавил это в свой план разработки WP Discourse: упростить этот процесс, то есть использовать одну общедоступную утилиту для достижения этой цели. Я запланировал это на июнь.

Также посмотрите на существующие утилиты в файлах lib/plugin_utilities.php и lib/utilities.php. А также на соответствующий метод link_topic в файле admin/discourse-sidebar/discourse-sidebar.php.

Дайте знать, как у вас получится.

@Angus, спасибо за ответ. Я только начинаю изучать PHP, поэтому, если вы планируете работать над этим, я подожду.

Кроме того, у меня возникает повторяющаяся ошибка с плагином WP. Не знаю, стоит ли создавать отдельный пост или проблему на GitHub, но вот что происходит:

Когда я открываю запись WP, связанную с темой форума, ссылка не отображается в блоке Discourse. Кажется, что ссылки нет.

Условия:
Это происходит независимо от того, была ли ссылка создана при публикации «Новой темы» или через «Ссылку на существующую тему».

Мои записи WP — это CPT (пользовательские типы записей).

Мои комментарии настроены на «Отображать ссылку на комментарии».

Помимо этого, в моей установке нет ничего особенного.

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

Я с радостью помогу с дополнительной информацией или тестированием.

С уважением, Ричард

Добавили ли вы свой пользовательский тип записей в настройку публикации «Типы записей для публикации»? См. далее

Да. Я должен был упомянуть, что сначала всё работает: я могу опубликовать новую тему или ссылку на существующую тему, и ссылки работают в обе стороны… за исключением одного случая.

Если позже я отредактирую пост в WordPress, блок Discourse будет выглядеть так, будто ничего не связано, хотя ссылка в интерфейсе WordPress по-прежнему ведёт на правильную тему форума, а ссылка в теме форума по-прежнему ведёт на правильный пост WordPress.

Таким образом, проблема существует только в блоке Discourse для WordPress при повторном редактировании поста.

Дайте знать, если понадобится что-то ещё.

Спасибо, ещё несколько вопросов:

  1. Видите ли вы какие-либо ошибки в консоли веб-инспектора вашего браузера?

  2. Что происходит, если выполнить полную перезагрузку страницы, находясь в редакторе?

Похоже, что проблема связана с JavaScript. Это может быть вызвано различными причинами, включая другие плагины или расширение браузера. Если возможно, нам нужно сузить круг поиска.

Консоль: Узел не найден на текущей странице.

Сначала в блоке Discourse отображаются разделы «Параметры публикации / Закрепить тему» и «Опубликовать в Discourse». Затем появляется раздел «Категория». Существующие ссылки не отображаются.

Я отключил все плагины, кроме WP-Discourse, CPT и ACF, а затем попробовал в браузерах Brave и Edge, оба с отключенными расширениями и щитами. Всё ещё не могу увидеть существующие ссылки в блоке Discourse.

Я провожу тестирование между обычными записями и записями CPT. Сообщу вам о результатах.

Не знаю почему, но мои ссылки теперь отображаются в блоке Discourse. Если найду закономерность в этой проблеме, сообщу. Спасибо.