npm0912
(Peter)
2024 年5 月 6 日 07:54
1
您好,
我注意到我们网站上的 WP Discourse 插件存在一个问题。
基本上,在我们成功发布一篇博客文章到 Discourse 论坛后,比如说一周后,如果我们对文章进行微小的更改并更新它,WP Discourse 插件会尝试再次将其发布到论坛。
然后我会收到一封“Discourse 发布失败”的电子邮件,提示嵌入式 URL 已被占用。
我也注意到,在更新非常旧的 WordPress 文章时,它们会出现在 Discourse 论坛的默认类别“新闻”中,这会让读者感到困惑。
是否有我遗漏的设置可以避免这种情况?
非常感谢!
angus
(Angus McLeod)
2024 年5 月 9 日 14:34
2
感谢您的报告。我将尽快仔细研究这种情况,希望是明天,最晚不迟于下周初。
2 个赞
angus
(Angus McLeod)
2024 年5 月 13 日 09:03
3
嘿 @npm0912 ,你能帮我做一个测试吗?
你能尝试重现这个问题吗,但在你进行更改之前(一周后,或任何正常的间隔时间),请在帖子编辑屏幕右侧的 Discourse 实用程序栏中检查 Discourse 帖子的状态。告诉我你在进行编辑时那里显示的内容,然后在编辑后是否会出现你刚才描述的行为。
另外,请与我分享你的 WP Discourse 日志下载。
npm0912
(Peter)
2024 年5 月 13 日 18:08
4
当我尝试编辑大约 10 天前发布的帖子时,我看到了这个 Discourse 帖子状态:
尝试更新帖子时,发生了同样的错误。我也收到了关于失败的相同电子邮件。
日志中的最后一个错误是:
[2024-05-13 18:02:53] publish.ERROR: create_post.post_error {"wp_title":"Nextcloud exhibiting at global events in May 2024","wp_author_id":"9","wp_post_id":209030,"response_message":"Embed url has already been taken","http_code":422}
设置页面上不应该有一个选项,可以在帖子已在 Discourse 中时禁用重新发布尝试吗?
谢谢!
angus
(Angus McLeod)
2024 年5 月 13 日 18:49
5
好的,这意味着您的 WordPress 实例未能正确保存 WP Discourse 插件的帖子元数据字段,很可能是由于您网站上的另一个插件或主题所致。您能否分享 WP Discourse 日志下载?其中将包含插件列表,这或许能暗示出问题所在。
通常情况下,插件会在首次发布后保存发布详情。而您的网站上没有发生这种情况。这正是我们需要弄清楚的地方
npm0912
(Peter)
2024 年5 月 14 日 07:34
6
好的,这很奇怪……我以为那是个 bug。我附上了元数据文件。如果这个文件足够的话,请告诉我
wp-discourse-logs-metafile-2024-04-17-2024-05-13.txt (2.5 KB)
如果知道有哪个插件可能会干扰 Discourse 插件,请告诉我。
非常感谢您花时间调查此事!
angus
(Angus McLeod)
2024 年5 月 14 日 09:13
7
您有几个插件可能是罪魁祸首。作为第一步,请在 WP Discourse 的“发布”设置中启用此选项。
它会改变插件保存自定义字段的方式,并可能影响您的情况下的行为。这可能无法解决问题,但可能会给我们提供更多见解。启用后,请尝试重现相同的情况。
在尝试了这一点之后,我们将禁用单个插件以查看是否可以隔离问题。您是否有暂存站点(即,具有您的主题和插件但没有真实数据的站点)?
我还会向插件中的发布逻辑添加更多日志记录,以帮助阐明此类问题(即,在发布到 Discourse 后在 WordPress 中存储元数据)。但这需要一些时间,在此期间我们可以执行上述一些测试。
npm0912
(Peter)
2024 年5 月 28 日 07:57
8
您好,再次感谢您的时间!
我启用了该设置,但问题仍然存在。
我们实际上使用的是一个暂存网站,有趣的是,即使插件、主题和文件完全相同,它的行为也不同——也就是说,在我发布一个测试帖子后,它会正确地发布到 Discourse,然后如果我回到同一个帖子,我不会在 Discourse 侧边栏设置中看到“Embed url has already been taken”错误。相反,我会看到它像这样:
所以服务器差异是:
暂存网站:
WordPress - 6.5.3
PHP - 8.1.27
MySQL - 10.6.16
实际网站:
WordPress - 6.5.3
PHP - 8.1.2-1ubuntu2.17
MySQL - 5.5.5
angus
(Angus McLeod)
2024 年5 月 28 日 11:17
11
两者之间存在一些细微的差异。可能不是原因,但值得注意的是,为了排除其成为原因的可能性,无论是此处还是其他问题,都应保持您的暂存站点和生产站点完全相同。
除此之外,我建议您仔细检查 WP Rocket 的设置(例如,两个站点之间的设置是否确实相同)。虽然 WP Rocket 在其特定用途方面效果很好,但它通常是 WordPress 插件出现问题的根源。
angus
(Angus McLeod)
2024 年5 月 28 日 12:50
12
请注意,WordPress 目前需要 MySQL 8.0 或更高版本。您需要升级您的生产数据库。
Requirements To run WordPress, it’s recommended your host supports: That’s really it. Apache or Nginx is recommended as the most robust and featureful server for running WordPress, but any server that supports PHP and MySQL will do. That said, for...
交叉引用:Could not update the meta value of discourse_post_id in database - #2 by angus
npm0912
(Peter)
2024 年5 月 28 日 14:19
13
实际上,WP Discourse 关于数据库的信息有误。数据库的正确版本是 10.6.16-MariaDB-0ubuntu0.22.04.1。
angus
(Angus McLeod)
2024 年5 月 28 日 14:49
14
该文件中打印的版本是 WordPress 核心函数 db_version() 的输出:
$wpdb->db_version()
在此处查看代码 ,并进一步参阅
这就是 WordPress 认为它正在使用的版本。这似乎是您的问题。
npm0912
(Peter)
2024 年5 月 28 日 15:46
15
你说得对。我再次检查了主题内的 db_version() 函数,确实得到了 5.5.5 的结果。但在“站点健康”后端页面,我看到版本是 10.6.16-MariaDB——这与系统管理员告诉我的版本相同……我的意思是,WordPress 也应该看到这个版本,对吧?
angus
(Angus McLeod)
2024 年5 月 28 日 16:12
16
抱歉,这里可能存在多种问题,在查看您的服务器之前,无法有信心地确定具体原因。
鉴于您报告的问题,我建议您彻底调查这个方面。