如何在 WordPress 中调试评论数量错误的帖子

我刚刚注意到,我们 WordPress 网站上有一篇帖子显示没有评论,但我清楚知道它在 Discourse 上确实收到了一条评论。我在该话题下又留了一条评论,结果也没有显示出来。不过,其他帖子接收评论一切正常。我看不出那篇帖子有什么异常或特殊之处。

有什么方法可以帮我排查这个问题吗?

请确保帖子上的评论符合您在插件“评论选项”标签页中设定的条件。如果看起来帖子的评论本应被同步到 WordPress,您可以通过在您的网站上为帖子启用“自定义字段”屏幕选项来调试此问题:

完成上述操作后,您将在编辑屏幕底部看到帖子元数据列表。请确保 discourse_permalinkdiscourse_topic_id 字段与关联的 Discourse 主题匹配。如果这些字段不存在,则该帖子可能已与 Discourse 解除关联。您可以通过在 Discourse 元数据框中选择“链接到现有主题”单选按钮来重新链接已解除关联的帖子。

谢谢,

情况变得更奇怪了。我刚刚看到一个新帖子收到了评论。我们 WordPress 网站的主页立即显示该帖子有一条评论。到目前为止,看起来还不错。然后,点击进入该帖子,顶部的信息显示有一条评论。

我点击了评论数量以滚动到页面相应位置,但显示的不是“加入讨论”,而是“开始讨论”。(我们实际上并不显示评论内容,只显示评论数量以及指向我们 Discourse 实例的链接。)我以为刷新页面就能解决问题,但刷新后,显示又变回了零条评论。主页上的数量也同步更新回了零。

我查看了 discourse_topic_id 和 discourse_permalink,它们都是正确的。不过,其他 Discourse 字段让我有些困惑。

discourse_comments_count 显示为 ‘0’

discourse_comments_raw 的内容如下:

{"id":1399,"posts_count":2,"filtered_posts_count":0,"posts":[],"participants":[{"id":11,"username":"nathan","name":"Nathan ","avatar_template":"https://www.ourdiscourse.com/user_avatar/www.ourdiscourse.com/nathan/{size}/182_2.png"},{"id":103,"username":"Zak","name":"Zak","avatar_template":"https://www.ourdiscourse.com/user_avatar/www.ourdiscourse.com/zak/{size}/652_2.png"}]}

另外,我也搞不清楚 discourse_post_id 应该是什么。仅从它包含的四位数字来看,我原本以为它应该是 WordPress 的帖子 ID,但实际上并不是。它到底应该代表什么呢?

如果您的 Discourse 话题是公开的,能否私信发给我一个链接?

您是否启用了“WP Discourse 发布为未列出主题”选项?discourse_comments_raw 元数据中 posts_countfiltered_posts_count 之间的差异表明,该主题中有两个小型操作帖子。当 posts_countfiltered_posts_count 之间存在差异时,WP Discourse 的 Webhook 刷新功能会出现问题。这个问题我会处理,但我不认为它与您遇到的帖子无法接收评论的问题有关。

至于帖子无法接收评论的问题,您的意思是该帖子指向其 Discourse 主题的链接未显示,还是链接显示的是“开始讨论”而不是“加入讨论”?

没错。

如果评论数为零,这样显示是合理的。我不太担心这个。这只是让我注意到并刷新页面,结果发现计数又降回零的原因。

哦,回答你的问题……

没有。

“wpdc_sync_post_comments” 字段的正确值是什么?

我仍然在这个问题上挣扎。

我刚刚查看了一个只有一篇帖子的主题。WP 前端的评论数本应为“1”,但显示为 0。此时 wpdc_sync_post_comments 的值为“0”。我假设这是一个真/假标志,应该设置为 1,于是我将其修改并保存了该帖子。刷新 WP 前端后没有任何变化,于是我在 Discourse 主题下发布了一篇新帖子,并立即刷新了 WP 页面。评论数正确地跳到了“2”。但再次立即刷新页面后,它又降回了“0”!在编辑界面中,我发现 wpdc_sync_post_comments 又被重置为 0,且

discourse_comments_count == 0
discourse_comments_raw ===
{"id":1451,"posts_count":3,"filtered_posts_count":1,"posts":[],"participants":[(省略)

另一篇帖子则显示如下:
discourse_comments_count == 3
discourse_comments_raw ===
{"id":1447,"posts_count":17,"filtered_posts_count":4,"posts":[],"participants":(省略)

感谢提供详细信息!

当该字段设置为 1 时,评论将在页面下次加载时同步。一旦评论同步完成,wpdc_sync_post_comments 的值将重置为 0

根据您提供的元数据来看,插件似乎在不应该的情况下将评论数量减去了 1。过去几天我一直在旅行。明天回到工作岗位后,我会仔细查看这个问题。