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

嘿!
我遇到了一个问题,Discourse 不再显示我文章下的评论了。当我的文章发布时,它会显示在我们博客的 Discourse 论坛上,但我必须在 WordPress 文章中手动链接它。然后评论就会显示出来。但以前不需要这一步。

我已经在那里写过这个问题了:422 Unprocessable Content response when using ActivityPub with WP Discourse - #5 by Miasanrot

不幸的是,那里的解决方案不是我的解决方案,而且似乎非常个性化。所以我开了一个新帖子。这些是我被要求发布的三个内容:

  1. WP Discourse 的日志,包括元文件。
  2. Discourse 的日志,特别是错误日志。
  3. 您在 Discourse 中使用的插件列表。

WP Discourse 的日志文件:
这是今天的日志:

[2024-03-14 06:02:59] comment.ERROR: sync_comments.response_error {"message":"Forbidden","discourse_topic_id":"","wp_post_id":13514,"http_code":403} 
[2024-03-14 07:14:26] comment.ERROR: sync_comments.response_error {"message":"Forbidden","discourse_topic_id":"","wp_post_id":13651,"http_code":403} 
[2024-03-14 08:22:19] comment.ERROR: sync_comments.response_error {"message":"Forbidden","discourse_topic_id":"","wp_post_id":13815,"http_code":403} 
[2024-03-14 08:48:21] comment.ERROR: sync_comments.response_error {"message":"Forbidden","discourse_topic_id":"","wp_post_id":13638,"http_code":403} 
[2024-03-14 09:37:36] comment.ERROR: sync_comments.response_error {"message":"Forbidden","discourse_topic_id":"","wp_post_id":13759,"http_code":403} 
[2024-03-14 10:55:34] comment.ERROR: sync_comments.response_error {"message":"Forbidden","discourse_topic_id":"","wp_post_id":13603,"http_code":403} 
[2024-03-14 11:25:23] comment.ERROR: sync_comments.response_error {"message":"Forbidden","discourse_topic_id":"","wp_post_id":13603,"http_code":403} 
[2024-03-14 12:36:28] comment.ERROR: sync_comments.response_error {"message":"Forbidden","discourse_topic_id":"","wp_post_id":13944,"http_code":403} 
[2024-03-14 16:03:01] comment.ERROR: sync_comments.response_error {"message":"Forbidden","discourse_topic_id":"","wp_post_id":13977,"http_code":403}

**这是元文件中的内容:**

### 服务器 ###

WordPress - 6.4.3
PHP - 8.0.26
MySQL - 8.0.30

### 活动插件 ###

Admin Columns for ACF Fields - 0.3.1
Akismet Anti-spam: Spam Protection - 5.3.1
Borlabs Cookie - Cookie Opt-in - 2.2.67
Contact Form 7 - 5.8.6
Genesis Blocks - 3.1.1
LightStart - Maintenance Mode, Coming Soon and Landing Page Builder - 2.6.9
Podigee Wordpress Quick Publish – now with Gutenberg support! - 1.3.5
Proxy Real IP - 1.1
Shariff Wrapper - 4.6.9
TablePress - 2.2.5
TablePress Extension: Responsive Tables - 1.1
Theme Test Drive - 2.9.1
User Role Editor - 4.64.1
WP-Discourse - 2.5.1
WP Import Export - 3.9.26

### WP Discourse 设置(已排除敏感信息) ###

display-subcategories - 0
allow-tags - 0
max-tags - 5
publish-as-unlisted - 0
full-post-content - 0
custom-excerpt-length - 50
add-featured-link - 0
auto-publish - 1
force-publish - 0
force-publish-max-age - 5
publish-failure-notice - 1
auto-track - 1
allowed_post_types - post
exclude_tags - 
hide-discourse-name-field - 0
discourse-username-editable - 1
direct-db-publication-flags - 0
verbose-publication-logs - 0
enable-discourse-comments - 1
comment-type - display-comments
ajax-load - 1
load-comment-css - 1
discourse-new-tab - 1
hide-wordpress-comments - 1
show-existing-comments - 1
max-comments - 50
min-replies - 1
min-score - 0
min-trust-level - 0
bypass-trust-level-score - 50
only-show-moderator-liked - 0
custom-datetime-format - 
cache-html - 1
clear-cached-comment-html - 0
verbose-comment-logs - 0
use-discourse-webhook - 1
webhook-match-old-topics - 0
use-discourse-user-webhook - 0
webhook-match-user-email - 0
enable-sso - 0
auto-create-sso-user - 0
real-name-as-discourse-name - 0
force-avatar-update - 0
redirect-without-login - 0
sso-client-enabled - 0
sso-client-login-form-change - 0
sso-client-sync-by-email - 0
sso-client-sync-logout - 0
logs-enabled - 1

我不知道如何下载或复制 Discourse 错误日志中的内容,但这是今天的截图。下午 4:06 接近我们最新文章的发布时间(下午 4:11)。

Discourse 中的插件列表:

Chat(已停用)、Data Explorer、Footnote、Spoiler Alert

如果我需要添加任何内容,请告诉我。提前感谢您的帮助。

@Miasanrot,感谢您提供的所有详细信息,非常感谢!

首先需要调查的是日志中的 403 注释同步错误,这似乎与您看不到注释的问题有关。403 错误意味着 WP Discourse 无法访问 Discourse,可能是由于授权失败。

  1. WP Discourse 管理面板的“连接”选项卡中,您是否看到一条消息说“您已连接到 Discourse!”?

  2. 由于您使用的是“Proxy Real IP - 1.1”WordPress 插件,我对您的 WordPress 和 Discourse 的网络环境感到好奇。该插件起什么作用?

感谢您快速的回复!也很感激。

是的,它显示我已连接。而且当我发布文章时,它似乎也会创建一些东西。在 WP 中,我有时会看到文章已被嵌入的错误(我认为与该用户在您链接的帖子中遇到的问题相同)。所以我也认为必须有连接(而且正如我所写的,它显示在管理面板中)。

第二个有点难。我是在一月份接管了这个博客,所以我并不是自己设置好所有东西的。但我问了前任管理员关于这个插件的事情,一旦我得到答复就会回复您。

编辑:他说该插件可以停用。那么我可以在下一步尝试停用它吗?

遗憾的是,到目前为止还没有解决方案。禁用上述提到的插件没有帮助。

抱歉,Justin,我把这件事给忘了。这个问题最有可能与你的WordPress设置有关。

(重点是我加的)

评论是什么时候停止工作的?你能找出在评论停止工作时WordPress发生了什么变化吗?你是否

  1. 更新了WordPress?
  2. 更新了插件?
  3. 更改(或更新)了你的主题?

Justin,我来跟进一下。这个问题你进展如何?

感谢您的再次跟进!

很难回答,但我认为 WordPress(和 PHP,都在同一天)的更新可能是发生这一切的节点。至少在那之后我第一次看到了这个问题。我运行的是倒数第二个版本的 WordPress(我想最近发布了 6.5,但还没安装),如果我没记错的话,PHP 是 7.4。

Discourse 插件运行的是 2.5.1 版本。

您是否知道您是从哪个版本的 WordPress 升级的?两次升级之间间隔了多久?您是否同时更新了您的主题?您的主题是“区块主题”吗?

我希望我能无误地回答。我于一月份接管了这个博客,当时的 WordPress 版本相当旧。我猜是 5.x,但我记不清具体数字了。两次更新之间肯定间隔了很长时间。我们的主题仍然是同一个,这是一个为我们页面设计的、单独编码的主题。我知道这可能会在更新页面时引起问题,尤其是因为我没有编码技能,但在我注意到这个 discourse 问题之前,一切似乎都还好。

如果我无法提供更详细的信息,我很抱歉,我会尽力而为 :smiley:
再次感谢您的耐心和帮助。

明白了。这是一个重大的升级(即从 Wordpress 5.x 到 6.x)。是否可以尝试使用默认的 Wordpress 主题(任何默认的 Wordpress 主题)进行测试,看看是否遇到相同的问题?我知道这有点麻烦,但这很可能是问题所在(即你的主题)。你可能需要迁移到一个评论区块

这应该是可行的。我今天晚些时候会发布一篇文章,并在此之前切换到一个 wp 主题,看看是否有效。

另外,给 @angus 的补充:块主题(block theme)到底是什么意思?我在 WP 中可以使用块编辑器来处理页面和文章等内容,但如果块主题意味着我可以通过添加块来随意设计页面,那么它就不是一个块主题。只是为了弄清楚。

1 个赞

因此,我切换到了 Wordpress 主题 Twenty Twenty-Three,然后发布了我的文章。一如既往,它在我的 discourse 中创建了一个帖子,但一如既往,它没有连接到博客的评论部分,我不得不手动完成。

我明白了。您网站上的某个东西阻止了插件正常运行。如果不是主题的问题,那接下来就要检查您安装的其他插件了。

在无法深入了解您网站的情况下,我只能建议您逐一禁用它们,看看行为是否有所改变。其中某个插件可能与当前版本的 WordPress 和/或 PHP 8.x 不兼容(WP Discourse 插件就与两者都不兼容)。

同样,这可能不是您想听到的,但对于像 WordPress 这样的可插拔系统来说,这些(即插件冲突)是可能的错误来源。在此阶段,值得尝试排除这个来源。

1 个赞

缓存和主题的组合是否可能导致此问题?我对这些东西一无所知,但有时页面上不会显示一些小东西,清除缓存后就能再次正常工作。例如:昨天我手动链接了一篇文章,但评论仍然没有显示在页面上。清除缓存后有所帮助。

今天我发布了一篇文章,它应该自动与 discourse 链接,但评论没有显示出来。所以我再次清除了缓存,然后评论就出现了。这对我来说并不容易理解,但那里有些东西不对劲。

是的,缓存可能在您的问题中起作用。请尝试使用 WP Discourse 设置的“评论”选项卡中的“使用 Ajax 加载评论”设置。

您正在使用什么缓存解决方案?

选项已激活。

我正在使用 WP Rocket 进行缓存,但在遇到一些问题后才安装了它。这些问题似乎已得到解决。但我无法确切地告诉你之前的缓存是如何工作的。我知道有缓存,但不知道具体的解决方案。当我接手这个博客时,我感觉到图片加载有些缓慢。在使用 WP Rocket 一两个月后,情况似乎有所改善。(评论问题在我安装它之前就已经存在了)

但偶尔我们会遇到页面显示不正确的问题。上周,在手动连接到 discourse 后,评论消失了。所以我用 WP Rocket 清除了缓存,它又可以正常工作了。

我似乎遇到了与 422 错误相同或类似的问题。我已经和 @angus 谈过,我将设置一个测试环境(WordPress 和 Discourse)进行测试,希望在本周末完成……

2 个赞

WP Rocket 可能会带来真正的麻烦。它会生成内容的静态副本,但会尝试保留那些应该是动态的或应该在很短时间内保持静态的部分。如果你足够幸运,能找到一个规则可以完全禁用评论缓存,那它就能正常工作——但你也会因此失去一些已有的好处。

就缓存而言,WordPress……算不上是噩梦,但也很接近了。我放弃了 WP Rocket,因为它需要我花费太多时间和精力去关注,而且它在较短的 TTL(生存时间)下效果最好。我使用其他工具取得了更好的效果(然后应该非常现实地考虑:如果它需要我每周花费数小时甚至更多时间去处理,那么节省一秒钟是否真的有坚实的理由;禁用不必要的插件和选择合适的 Teme 是更好的选择)。

大多数网站实际上并不需要评论功能,因为它们很少收到评论,而 Discourse 作为评论部分可以满足其他目的。当然,这取决于具体情况。

对我来说,连接到 Discourse 就像一个广告。但我的大多数访客都使用手机,几乎从不向下滚动足够长——这和侧边栏一样,完全是个疑问。

1 个赞

那么是哪些工具呢?再说一遍:我对这些技术性东西不太熟悉,这就是为什么我在这里,并试图看看是否有任何帮助来解决这个问题。这个问题在我安装 WP Rocket 之前就存在了,它解决了一些其他类型的问题,但如果这个工具本身有问题,我愿意接受其他解决方案。

我们的文章下最多有 100 或 200 条评论(具体来说是在 Discourse 中),所以可以说我们希望它们被整合进来,即使只是想阅读文章的用户也不会滚动到那里。

在此论坛中范围之外,因为它涉及到优化 WordPress。尝试在 Facebook 上搜索,例如“加速 WordPress”。

但您可能会对 Asset CleanUp、EWWW Image Optimizer 插件,甚至 Redis 感兴趣,如果您有很多并发用户的话。您至少应该使用 Nginx 的工具来尽可能多地阻止机器人流量。但如果真正的瓶颈是主题和大量不同的插件,那么这些工具的帮助都不大。坏消息是,您必须不时清理数据库本身。

但如果 WP Rocket 有帮助,那就太好了。但不要使用太长的缓存时间。并且您必须将 Discourse 列入缓存黑名单。