帖子未正确发布到Discourse ——API响应中缺少Permalink

在使用 Discourse WordPress 插件将 WordPress 文章发布到 Discourse 时,我遇到一个问题。

问题描述:

当我创建一篇新文章并在发布前,在 Discourse 选项卡下勾选“发布到 Discourse”时,文章成功发布到 WordPress。但是,Discourse 主题并未在此时创建

之后,如果我编辑同一篇文章,再次进入 Discourse 选项卡,然后点击**“新建主题”并发布到 Discourse,文章确实被创建到了 Discourse 站点。但这个 Discourse 主题并未与原始的 WordPress 文章关联**。没有永久链接关联或元数据被保存回文章。

调试发现:

在调试过程中,我注意到调用:
/wp-json/wp-discourse/v1/publish-topic

返回以下响应:

{
  "publish_response": "success",
  "permalink": ""
}

如您所见,“permalink”字段为空。这似乎是 Discourse 主题被创建但未链接回 WordPress 文章(即,永久链接未存储在 postmeta 中,因此 WP 和 Discourse 之间的链接断开了)的核心原因。

您能否帮助调查为什么 API 响应中返回的永久链接为空?是插件配置错误还是发布工作流程中存在 bug?

如果您需要任何日志或进一步的信息,请告诉我。感谢您的帮助!

您好 @techops,能否请您分享一下 WordPress 中 WP Discourse > Logs 的相关日志?如果可能的话,也请分享该视图中的元文件。

1 个赞

您好 Angus,

感谢您的快速回复。

在 WordPress 后台的 WP Discourse > Logs没有日志可用,日志视图目前是空的。

但是,这是您要求的元文件:Discourse meta - Google Docs

如果还有其他可以提供的信息来帮助解决此问题,请告诉我。

谢谢!

感谢 @techops,有几件事我想做。

请在“发布设置”中禁用此设置:

发布失败时发送电子邮件通知

请确保在“发布设置”中启用此设置:

详细发布日志

您已设置了多种文章类型用于发布:

post,event,groups,collections,podcast

您在使用哪种文章类型时遇到此问题?如果不是 post,您能否更详细地说明该文章类型的设置方式?

您好 Angus,
我已应用建议的设置:

  • 禁用发布失败时发送电子邮件通知
  • 启用详细的发布日志

我只使用 post 帖子类型。

更新设置后,我创建并发布了一个新帖子到 Discourse。这是生成的日志:

[2025-04-22 15:58:12] publish.INFO: create_post.post_success {"wp_title":"test post 4","wp_author_id":"221","wp_post_id":15068} 
[2025-04-22 15:58:12] publish.INFO: create_post.body_valid {"wp_title":"test post 4","wp_author_id":"221","wp_post_id":15068} 
[2025-04-22 15:58:12] publish.INFO: create_post.after_publish {"post_id":15068,"remote_post_type":"create_post","discourse_post_id":"","discourse_topic_id":"6910","discourse_permalink":""} 

如果您需要任何其他信息或详细信息,请告诉我。

谢谢!

感谢您的分享。那些日志在我看来是正常的。我可以看到在Wordpress发布后,Discourse主题正在被创建。能否请您确认一下具体的问题所在?请用以下这些术语描述:

  1. 我在Wordpress中编辑一篇帖子。
  2. 在帖子发布后,我期望看到的是……

此时请不要做任何技术假设。谢谢!

你好Angus,
我在WordPress中编写了一个帖子。
在帖子发布后,我希望看到以下行为:

当**‘发布到Discourse’**复选框被选中时,正确的行为应该是在Discourse中创建一个帖子,并且它应该与WordPress中的帖子链接关联。

然而,实际发生的是帖子在Discourse中被创建了,但链接立即丢失了。随后必须手动重新创建链接。

谢谢!

谢谢,你还能确认以下内容吗:

  1. 你使用的是哪种 WordPress 文章编辑器?经典编辑器还是古腾堡(Gutenberg)?这些文章是以非标准方式创建的吗(例如,我看到你使用的是“Gravity Forms 高级文章创建”)
  2. 你能分享一个出现该问题的示例 WordPress 文章和 Discourse 主题吗?
  3. 你是否使用任何修改 WordPress 元字段的插件(例如高级自定义字段)?

感谢您的跟进。以下是详细信息:

  • 我们正在使用 Gutenberg 编辑器创建帖子。
  • 我们不使用任何自定义字段插件,例如 Advanced Custom Fields。
  • 我录制了一个重现问题的视频供您审阅。您可以在此处查看。

如果您需要任何其他信息或进一步的测试,请告诉我。
如果对您有帮助,我也可以提供临时登录访问权限,以便您直接查看设置。

谢谢!

感谢您录制视频。看起来您正在使用自定义发布工作流来发布帖子。

这可能与问题有关。

您能否尝试在不使用此自定义工作流的情况下发布帖子?我们将通过排除法来找出问题的根源。很可能是您的某个自定义设置与 WP Discourse 的发布功能集不兼容。

谢谢你的建议。
我已测试过直接发布帖子而不使用自定义工作流,但不幸的是,它仍然不起作用。

好的,请继续保持这种风格。您的某个自定义设置很可能阻止了 WP Discourse 插件在主题发布时保存 post_id 和永久链接。

谢谢你,Angus。

我已经找到了罪魁祸首,SmartCrawl SEO插件与WP Discourse存在冲突。在停用SmartCrawl后,帖子如预期般发表到Discourse,并能正确链接到WordPress的帖子。

1 个赞

在找到罪魁祸首方面做得不错。我认为此时值得将此问题提交给他们的支持团队,也就是“你的插件似乎阻止了另一个插件使用标准的WordPress API…”然后描述一下这个问题。你或许可以引导他们查看这个话题。