Discourse未能在文章下自动关联评论

WP Rocket 应该可以。你可能需要对显示 Discourse 评论的 WordPress 页面进行一些调整来清除缓存。这里有一个很好的建议:WP Discourse comment webhook does not trigger a WP Rocket Cache refresh - #13 by Brandon007 Discourse 的“ajax load”选项也是一个合理的解决方法。

这似乎是真正的问题:
[2024-03-14 06:02:59] comment.ERROR: sync_comments.response_error {"message":"Forbidden","discourse_topic_id":"","wp_post_id":13514,"http_code":403}

这表明当 WP Discourse 插件尝试拉取评论时,Discourse 返回了 403 响应(禁止)。(错误是从这里记录的:wp-discourse/lib/discourse-comment.php at main · discourse/wp-discourse · GitHub

这只是一个猜测,但这个插件表明你的 WordPress 网站位于代理后面:

这可能会触发 Discourse 上的 403 错误。也许请求头配置不正确?我对此了解不多。但是,你可以通过在 Discourse 网站的错误日志页面打开的情况下,从 WordPress 发布一篇文章来确认这是否是一个问题。

点击此链接可转到错误日志页面:

认为 403 响应会在日志中触发一个条目。如果触发了,请在此处分享(已编辑的)错误消息。

谢谢!我一有空就会尝试一下。

我还发现之前的缓存似乎与插件 GridPane Redis Object Cache 和 Nginx Helper 一起工作。所以也许我安装 WP Rocket 是不必要的。但禁用其中任何一个也没有帮助。

另外,评论计数目前也不起作用。即使清除缓存,最新文章的数字仍停留在 16(Discourse 目前有 18 条评论)

如前所述:ajax 选项已激活。

我稍后或明天会做那个关于日志的事情。

是的,任何流行的缓存插件都应该可以工作。只需安装一个并尝试了解它的作用。对于调试问题,暂时禁用缓存可能会很有用。这样您就可以确认问题不是由缓存引起的。

评论计数是从返回此错误的函数设置的:

[2024-03-14 06:02:59] comment.ERROR: sync_comments.response_error {"message":"Forbidden","discourse_topic_id":"","wp_post_id":13514,"http_code":403}

如果您仍然收到该错误,评论计数将不会更新。

在网站上安装了 Proxy Real IP - 1.1 插件表明其服务器配置相当复杂。也许可以咨询设置网站的人以获取详细信息。您也可以考虑将网站迁移到可以为您处理此类事务的托管服务。

我昨天对问题是否会出现在 Discourse 错误日志中没有昨天那么确定了,但仍然值得一试。

它已安装,但未在我们德语页面上激活,仅在我们英语页面上激活。几周前我问了接手我之前负责该页面的人关于这个插件的事情,只是忘记了也在英语页面上停用它。Discourse 只连接到我们德语页面,在那里它未被激活。所以我猜它目前没有功能。

我真希望我对所有这些事情能有更多的了解,因为我有时也觉得WordPress运行非常缓慢,而且我只是在网上随便看看,并没有真正弄懂所有这些东西。

澄清一下:我主要说的是 miasanrot.de / miasanrot.com 未连接到 Discourse。所以这个网站使用的是WordPress的正常评论系统。

你的感觉是对的。我发布了一篇带有错误日志的文章,但它没有显示在 Discourse 的错误日志中。

现在情况更糟了:新文章没有显示给未登录 WP 的用户。所以页面就像冻结了一样。

更新 2:它现在显示了正确的评论数量和新文章,但我不太清楚是什么改变了。一个盲猜:我停用了之前提到的两个缓存插件,只启用了 WP rocket。我尝试重新激活这两个插件,但没有任何改变。然后我在编辑器中更新了文章,它就生效了。所以其中一个插件(nginx helper)说“每当帖子被编辑/发布时,清除 nginx 的 fastcgi/proxy 缓存或 redis-缓存。还做了其他一些事情。”——所以我猜是这个过程现在帮助页面正常显示了。

我认为我可以停用 WP Rocket 了,但缓存方面还是有些不对劲,我感觉这可能与 Discourse 问题有关。

您的主要问题绝对是其他问题,但您为什么要使用 Nginx-helper?WP Rocket 会制作静态副本,您不需要另一个用于 fastcgi 和 Redis 的缓存(当然,在某些情况下,即使有 WP Rocket,PHP 调用也可能需要缓存,但这些网站通常不使用 WP Rocket,而是使用更高级别的工具)。

但缓存意味着没有任何动态内容发生。

接手这个博客时它就已经安装了。说实话,我不知道为什么。我只知道一旦我停用它,页面就无法更新。所以是的,问题可能就在那个方向上。

编辑:我现在去检查了一下。停用了插件,页面无法更新。激活了插件并更新了一篇文章,评论数量显示正确。

一个粗略的猜测是,您应该查看 wp-config.php 试图做什么。最前面的几行可能会提供线索。

但再说一遍。您应该禁用所有插件,并使用一个基本主题,如 2020,然后尝试 Discourse 是否按预期运行。如果是,那么一些插件或主题就是问题所在。

首先备份您的数据库。禁用插件和主题可能会给您带来意想不到的惊喜。如果您还没有,WP-CLI 值得搜索一下。

但如果它仍然与您作对……希望这里的某些专家能提供帮助。

无论如何——您应该考虑您正在使用哪些插件以及您是否真的需要它们。

我计划一有时间并且流量不是那么大的时候就这么做。目前很难找到一天可以进行这样的测试。但我会做的。

还有一个观察:
当我直接发布文章而不先将其设为私有时(我通常在不想直接发布时这样做),Discourse 会将主题正确地链接到文章。(显示的评论数量仍然是错误的,但评论显示在文章下方)

2 个赞

我也遇到了同样的问题。 评论已停止显示,并且我看到了那些 sync_comments 错误。我不确定它具体是什么时候开始的,但我偶尔会更新 WordPress 和插件。

@steelmaiden,请在 Support > WordPress 中创建一个新主题,并:

  1. 描述您看到的行为。
  2. 描述预期的行为。
  3. 分享您拥有的任何错误日志,以及日志查看器中的“meta”文件或下载的日志。

谢谢。