# 关于更经济实惠评论的一个想法？

**URL:** <https://meta.discourse.org/t/an-idea-for-more-economical-comments/285124>\
**Category:** WordPress\
**Created:** [2023年十一月10日 22:15 UTC](https://meta.discourse.org/t/an-idea-for-more-economical-comments/285124 "2023-11-10T22:15:46Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![Petr\_Mišák](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/petr_mi%C5%A1%C3%A1k/32/184800_2.png) [@Petr\_Mišák](https://meta.discourse.org/u/Petr_Mi%C5%A1%C3%A1k)\
**Post date:** [2023年十一月10日 22:15 UTC](https://meta.discourse.org/t/an-idea-for-more-economical-comments/285124/1 "2023-11-10T22:15:47Z")

</div>

目前，WordPress 和 Discourse 的链接工作方式是，每篇文章都会自动以隐藏状态传输到 Discourse。因此，即使是没有进行讨论的文章也会被传输。

这非常消耗资源，因为 WordPress 会创建许多“空”主题。

有人能想到一个解决方案，让只有在开始讨论的文章才从 WP 传输到 Discourse 吗？

---

<div class="post-metadata">

**Author:** ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)\
**Post date:** [2023年十一月11日 11:47 UTC](https://meta.discourse.org/t/an-idea-for-more-economical-comments/285124/2 "2023-11-11T11:47:54Z")

</div>

嘿 @Petr_Mišák，

要做到这一点，您需要将 WordPress 上创建的评论导入 Discourse 作为帖子。使用 [WP Discourse](https://github.com/discourse/wp-discourse) 插件无法实现这一点，并且在不久的将来也不太可能得到支持。有关这方面的更广泛的思考，请参阅

> [@Should Discourse make an effort to become a viable comment platform?](https://meta.discourse.org/t/should-discourse-make-an-effort-to-become-a-viable-comment-platform/274455/):
>
> I’ve created a few posts recently about using Discourse as a comment platform and improving its existing functionality for embedding comments: [Using Discourse to power comments in an event system or blog? - #29 by simon](https://meta.discourse.org/t/using-discourse-to-power-comments-in-an-event-system-or-blog/90308/29)[Control which comments are embedded? - #17 by simon](https://meta.discourse.org/t/control-which-comments-are-embedded/41363/17)[Topic embedding needs some love](https://meta.discourse.org/t/topic-embedding-needs-some-love/262763) Bases on the lack of response to those posts, my suspicion is that there isn’t much interest from the Discourse team or community in pursuing the use of Discourse as a comment platform. That’s …

话虽如此，我想到了，一旦我们在 ActivityPub 插件中添加了 Discourse 分类参与者关注其他 ActivityPub 参与者的功能（我目前正在开发中），您或许可以通过某种方式配置 WordPress ActivityPub 插件来实现这一点。尽管这只是猜测。

> [@Petr\_Mišák](#):
>
> 这非常消耗资源，因为 WordPress 会创建许多“空”主题。

我还想更深入地了解为什么您认为这“消耗资源”。如果您发布了大量未获得参与的文章，也许可以考虑在论坛上发布一部分更有可能获得参与的文章？反之，大量没有回复的嵌入式主题是否以某种您观察到的方式损害了您的社区？也许您可以做些什么来解决根本问题，可以说？

---

<div class="post-metadata">

**Author:** ![simon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon/32/339122_2.png) [@simon](https://meta.discourse.org/u/simon)\
**Post date:** [2023年十一月12日 01:45 UTC](https://meta.discourse.org/t/an-idea-for-more-economical-comments/285124/3 "2023-11-12T01:45:11Z")

</div>

> [@Petr\_Mišák](#):
>
> 有人能想到一个解决方案，让只有在已经开始讨论的文章才从 WP 迁移到 Discourse 吗？

为了方便理解，我认为您有一个热门的 WordPress 网站，有很多帖子，并且最近创建了一个 Discourse 论坛，并将 Discourse WordPress 插件添加到了您的网站。

您的 WordPress 网站上有多少帖子？旧帖子是否经常收到评论，还是人们通常只评论新帖子？

在解决方案方面，您是否会考虑需要向 WordPress 网站添加自定义代码的解决方案，还是只对不需要任何自定义代码的方法感兴趣？

如果网站上的帖子通常在发布后只在短时间内收到评论，那么最简单的解决方案就是开始将网站上最新的帖子发布到 Discourse。

下一个最简单的做法是向您的网站添加一个插件，该插件修改 [WP Discourse](https://github.com/discourse/wp-discourse) 的“开始讨论”链接，使其不再是指向 Discourse 主题的链接，而是触发 [WP Discourse](https://github.com/discourse/wp-discourse) 插件将帖子发布到 Discourse 的链接。实现这一目标最棘手的部分是弄清楚如何处理第一次单击“开始讨论”链接的用户的情况——他们是否应该在主题发布后自动重定向到该主题，他们在主题发布期间会看到什么，等等。

另一种可能的解决方案不需要自定义 WordPress 插件，但需要一些可能昂贵的开发时间，那就是找人编写一个导入脚本，将您网站上现有的所有帖子、评论和用户导入到 Discourse。这将解决空主题的问题。如果采取这种方法，可以考虑使用您的 WordPress 网站作为 Discourse 网站的 [DiscourseConnect](https://meta.discourse.org/t/13045?silent=true) 提供商。这将方便导入的用户访问 Discourse。

---

<div class="post-metadata">

**Author:** ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Post date:** [2023年十一月12日 13:33 UTC](https://meta.discourse.org/t/an-idea-for-more-economical-comments/285124/4 "2023-11-12T13:33:00Z")

</div>

> [@Petr\_Mišák](#):
>
> 这非常消耗资源，因为WordPress会创建许多“空”主题。

空主题不消耗多少资源。您说的是成千上万个吗？

---

<div class="post-metadata">

**Author:** ![Petr\_Mišák](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/petr_mi%C5%A1%C3%A1k/32/184800_2.png) [@Petr\_Mišák](https://meta.discourse.org/u/Petr_Mi%C5%A1%C3%A1k)\
**Post date:** [2023年十一月13日 21:18 UTC](https://meta.discourse.org/t/an-idea-for-more-economical-comments/285124/5 "2023-11-13T21:18:35Z")

</div>

这可能只是我翻译错误，但我不想在 Discourse 中发布 WordPress 评论，只想在 Discourse 中讨论 WordPress 文章的主题。

为此，我需要 WordPress 插件在每篇已发布的文章发布后，在 Discourse 中插入一个隐藏的主题。

我非常介意的是，WordPress 文章与 Discourse 中的评论之间的链接是在文章发布时创建的，而不是在有人表示有兴趣讨论该主题时创建的。

考虑到所有文章中只有 10% 有人评论，但 WordPress 插件会为每篇已发布的文章在 Discourse 中创建一个链接。因此，以这种方式创建的 90% 的链接将保持隐藏状态，并白白占用资源。

我们每天发布约 13 篇文章。所以一年有 13\*365=4,745 篇文章。其中 4,270 篇将在 Discourse 系统中设置为隐藏主题，并且永远不会有评论添加。这意味着 10 年内将有 42,700 个垃圾主题。

解决方案是，隐藏主题不在文章在 WordPress 中发布时创建，而是在有人在 WordPress 文章下表示有兴趣评论时才创建该主题。

这样就不需要创建隐藏且未使用的 Discourse 线程了。

---

<div class="post-metadata">

**Author:** ![Petr\_Mišák](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/petr_mi%C5%A1%C3%A1k/32/184800_2.png) [@Petr\_Mišák](https://meta.discourse.org/u/Petr_Mi%C5%A1%C3%A1k)\
**Post date:** [2023年十一月13日 21:49 UTC](https://meta.discourse.org/t/an-idea-for-more-economical-comments/285124/6 "2023-11-13T21:49:10Z")

</div>

正如您所说，我们有一个访问量很大的 WordPress 网站，但我们正在将用户帐户、登录名、文章评论完全迁移到 Discourse。WordPress 将只成为一个“[DiscourseConnect](https://meta.discourse.org/t/13045?silent=true) 客户端”。

我们每天发布大约 13 篇文章 🙂

人们通常会评论新文章，但一篇旧文章的讨论发展起来也并不罕见。我们试图在文章发布一段时间后对其进行更新。添加到文章的新信息可以重新点燃讨论。

我们很乐意在 WordPress 中添加一段代码。

使用当前的 Discourse WordPress 插件，我们计划只将 2023 年 11 月 1 日之后发布的新文章添加到 Discourse，但这将在 Discourse 中创建数千个未使用的主题。此外，如果有人想评论 2015 年的文章，他们将无法做到，因为该主题在 Discourse 中不存在。

如果主题仅在用户点击“开始讨论”时创建，那将是最好的。

**我大致设想整个过程将如何进行？我将举一个说明性但虚构的例子。**

- 在 WordPress 中，我们有一篇草稿文章，例如 www.SvetAndroida.cz/android-telefony-2023
- 我们将发布文章
- 此时什么都不会传输到 Discourse

然后有人点击 WordPress 文章下方的“开始讨论”按钮

- 此时 WordPress 调用 Discourse 创建一个主题，地址为 komunita.SvetAndroida.cz/android-telefony-2023
- 创建后，它会将用户重定向到 Discourse 发表第一条评论

如果同一个人想在同一篇 WordPress 文章上“添加评论”（另一条评论）

- 他们将不再调用 Discourse 并创建主题
- 但用户将在点击按钮时直接被带到 Discourse
- 或者，“添加评论”按钮不再需要由 JavaScript 处理，但由于主题已存在，该按钮可以只是一个 HTML 链接，从 SEO 角度来看这会更好

使用 JavaScript 只会在有人点击“开始讨论”并想添加第一条评论时才会在 Discourse 中创建一个新主题。

我们也许可以自己完成整个解决方案，但目前 WordPress 程序员短缺。此外，如果此功能直接包含在官方 Discourse 插件中，那将是最好的。

---

<div class="post-metadata">

**Author:** ![Petr\_Mišák](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/petr_mi%C5%A1%C3%A1k/32/184800_2.png) [@Petr\_Mišák](https://meta.discourse.org/u/Petr_Mi%C5%A1%C3%A1k)\
**Post date:** [2023年十一月13日 21:50 UTC](https://meta.discourse.org/t/an-idea-for-more-economical-comments/285124/7 "2023-11-13T21:50:44Z")

</div>

在我们的案例中，这大约是10年内50,000个主题。

---

<div class="post-metadata">

**Author:** ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Post date:** [2023年十一月13日 21:52 UTC](https://meta.discourse.org/t/an-idea-for-more-economical-comments/285124/8 "2023-11-13T21:52:47Z")

</div>

这没什么大不了的，但你可以每年清理掉一些几年前的。

---

<div class="post-metadata">

**Author:** ![Petr\_Mišák](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/petr_mi%C5%A1%C3%A1k/32/184800_2.png) [@Petr\_Mišák](https://meta.discourse.org/u/Petr_Mi%C5%A1%C3%A1k)\
**Post date:** [2023年十一月13日 21:57 UTC](https://meta.discourse.org/t/an-idea-for-more-economical-comments/285124/10 "2023-11-13T21:57:39Z")

</div>

清理它是有意义的，但我们会尝试更新旧文章并在发布一段时间后激活讨论。因此，删除不是我们理想的解决方案。 …

---

<div class="post-metadata">

**Author:** ![simon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon/32/339122_2.png) [@simon](https://meta.discourse.org/u/simon)\
**Post date:** [2023年十一月13日 22:19 UTC](https://meta.discourse.org/t/an-idea-for-more-economical-comments/285124/11 "2023-11-13T22:19:12Z")

</div>

这都说得通，尤其是在处理已发布的文章时。我唯一担心的是，依赖自定义代码会增加 WordPress/Discourse 集成的复杂性。不过我认为应该没问题。请确保您的开发人员使用 [WP Discourse](https://github.com/discourse/wp-discourse) 插件的 action 和 filter 钩子，并且不要编辑核心插件的代码。他们需要弄清楚在点击“开始讨论”链接时如何调用公共 `sync_to_discourse` 方法：[wp-discourse/lib/sso-client/sso-client-base.php at main · discourse/wp-discourse · GitHub](https://github.com/discourse/wp-discourse/blob/main/lib/sso-client/sso-client-base.php#L77%E3%80%82%E9%80%9A%E8%BF%87%E8%AF%A5%E6%96%B9%E6%B3%95%E5%8F%91%E5%B8%83%EF%BC%8C%E6%89%80%E6%9C%89%E5%90%88%E9%80%82%E7%9A%84%E5%85%83%E6%95%B0%E6%8D%AE%E9%83%BD%E5%B0%86%E6%B7%BB%E5%8A%A0%E5%88%B0) WordPress 文章中。

> [@Petr\_Mišák](#):
>
> 我们每天发布大约 13 篇文章 🙂

那太好了！也许可以看看这个 Discourse 站点：[https://bbs.boingboing.net/c/boing/3。他们使用](https://bbs.boingboing.net/c/boing/3%E3%80%82%E4%BB%96%E4%BB%AC%E4%BD%BF%E7%94%A8) WordPress 插件将类似数量的文章发布到 Discourse。在他们的案例中，他们会自动将所有新文章发布到 Discourse。他们没有将 WordPress 网站设置 Discourse 之前创建的文章发布到 Discourse。

---

<div class="post-metadata">

**Author:** ![Petr\_Mišák](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/petr_mi%C5%A1%C3%A1k/32/184800_2.png) [@Petr\_Mišák](https://meta.discourse.org/u/Petr_Mi%C5%A1%C3%A1k)\
**Post date:** [2023年十一月14日 08:33 UTC](https://meta.discourse.org/t/an-idea-for-more-economical-comments/285124/12 "2023-11-14T08:33:55Z")

</div>

在这个论坛上是否有任何合适的地方可以让我找到开发者来修改上面描述的 Discourse 的 WordPress 插件？

---

<div class="post-metadata">

**Author:** ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)\
**Post date:** [2023年十一月14日 08:35 UTC](https://meta.discourse.org/t/an-idea-for-more-economical-comments/285124/13 "2023-11-14T08:35:59Z")

</div>

> **[Marketplace](https://meta.discourse.org/c/marketplace/14)**
>
> This is your hub for all Discourse-related commerce: jobs, gigs, plugins, themes, hosting, and more.

---

<div class="post-metadata">

**Author:** ![Petr\_Mišák](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/petr_mi%C5%A1%C3%A1k/32/184800_2.png) [@Petr\_Mišák](https://meta.discourse.org/u/Petr_Mi%C5%A1%C3%A1k)\
**Post date:** [2023年十一月14日 08:37 UTC](https://meta.discourse.org/t/an-idea-for-more-economical-comments/285124/14 "2023-11-14T08:37:53Z")

</div>

谢谢，你速度很快。我本来在分类里找，但没找到。这让我很惊讶。不过搜索帮了我。

---

<div class="post-metadata">

**Author:** ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)\
**Post date:** [2023年十一月14日 09:23 UTC](https://meta.discourse.org/t/an-idea-for-more-economical-comments/285124/15 "2023-11-14T09:23:07Z")

</div>

感谢您详细的回复 Petr，但我有点困惑。

> [@Petr\_Mišák](#):
>
> 我不想在 Discourse 中发布 WordPress 评论，只想在 Discourse 中讨论 WordPress 文章的主题。  
> …  
> 我非常恼火的是，WordPress 文章和 Discourse 中的评论之间的链接是在文章发布时创建的，而不是在有人表示有兴趣讨论该主题时创建的。

如果您不想要 WordPress 评论，并且 Discourse 中还没有相关主题，那么人们将如何表达对讨论文章的兴趣？

\*编辑 啊，我看到了，您已经设计了一个用户体验。

> [@Petr\_Mišák](#):
>
> - 在 WordPress 中，我们有一篇草稿文章，例如 www.SvetAndroida.cz/android-telefony-2023
> - 我们将发布文章
> - 此时还没有任何内容传输到 Discourse
> 
> 然后有人点击 WordPress 文章下的“开始讨论”按钮
> 
> - 此时 WordPress 调用 Discourse 来创建一个主题，地址为 komunita.SvetAndroida.cz/android-telefony-2023
> - 创建完成后，它会将用户重定向到 Discourse 以发布第一条评论
> 
> 如果有人想在同一篇 WordPress 文章下“添加评论”（另一条评论）
> 
> - 他们将不再调用 Discourse 并创建主题
> - 但用户点击按钮后将被直接带到 Discourse
> - 或者“添加评论”按钮不再需要通过 JavaScript 处理，因为主题已经存在，按钮可以只是一个 HTML 链接，这从 SEO 的角度来看会更好

是的，这完全可行。

> [@simon](#):
>
> 当点击“开始讨论”链接时，他们需要弄清楚如何调用公共 `sync_to_discourse` 方法：[https://github.com/discourse/wp-discourse/blob/main/lib/sso-client/sso-client-base.php#L77](https://github.com/discourse/wp-discourse/blob/main/lib/sso-client/sso-client-base.php#L77)。通过这种方法发布，所有相关的元数据都将被添加到 WordPress 帖子中。

现在想来，我认为这可能是该插件的一个小缺陷，我们没有更简单的方法来做到这一点。我认为添加一个实用函数以及一个连接到它的短代码和区块是有意义的。我将在当前版本之后的下一个版本中对此进行研究。

---

<div class="post-metadata">

**Author:** ![Petr\_Mišák](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/petr_mi%C5%A1%C3%A1k/32/184800_2.png) [@Petr\_Mišák](https://meta.discourse.org/u/Petr_Mi%C5%A1%C3%A1k)\
**Post date:** [2023年十一月15日 16:48 UTC](https://meta.discourse.org/t/an-idea-for-more-economical-comments/285124/16 "2023-11-15T16:48:57Z")

</div>

为 Discourse 的官方 WordPress 插件添加支持是个好主意。能否大致了解该插件的哪个版本以及需要多长时间才能实现此新功能？

---

<div class="post-metadata">

**Author:** ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)\
**Post date:** [2023年十二月4日 13:27 UTC](https://meta.discourse.org/t/an-idea-for-more-economical-comments/285124/17 "2023-12-04T13:27:57Z")

</div>

> [@angus](#):
>
> > [@simon](#):
> >
> > 他们需要弄清楚如何在点击“开始讨论”链接时调用公共 `sync_to_discourse` 方法： [https://github.com/discourse/wp-discourse/blob/main/lib/sso-client/sso-client-base.php#L77](https://github.com/discourse/wp-discourse/blob/main/lib/sso-client/sso-client-base.php#L77)。通过该方法发布，所有适当的元数据都将添加到 WordPress 帖子中。
> 
> 现在想想，我认为插件在这方面有些不足，我们没有更简单的方法来做到这一点。我认为添加一个实用函数以及一个连接到它的短代码和块是有意义的。我将在当前版本之后的版本中对此进行研究。

我下周将开始着手处理这个问题，以便添加到 `2.5.1`（下下个版本）中。@Petr_Mišák 你将能够使用它来实现你的目标。

---

<div class="post-metadata">

**Author:** ![Petr\_Mišák](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/petr_mi%C5%A1%C3%A1k/32/184800_2.png) [@Petr\_Mišák](https://meta.discourse.org/u/Petr_Mi%C5%A1%C3%A1k)\
**Post date:** [2023年十二月11日 08:00 UTC](https://meta.discourse.org/t/an-idea-for-more-economical-comments/285124/18 "2023-12-11T08:00:17Z")

</div>

太好了，我很期待。我们已经在主站 [https://www.svetandroida.cz/](https://www.svetandroida.cz/) 上部署了 Discourse。
