处理已取消的会员资格

我正在使用 WordPress SSO 来授权已购买会员资格的用户(我在 WordPress 中实现了自定义逻辑来判断他们是否为会员)。一切运行正常,但我想知道如何处理已取消会员资格的用户。

显然,取消会员资格意味着他们将无法登录。不幸的是,我仍然需要手动将他们登出,以防他们在取消后继续访问论坛并保持会话活跃(手动操作本是我在从 Facebook 群组迁移后希望避免的)。

但我还有两个额外的顾虑:

  • 他们在论坛发布的主题/帖子会发生什么?我希望这些内容保留,因此我推测这意味着我不能删除该用户。
  • 我确实希望确保不再向已取消会员资格的用户发送摘要邮件。Discourse 在我不采取“某些操作”之前,完全不知道该账户已被取消。具体该做什么呢?前提是我不想删除他们的内容。

是否可以通过用户停用(user suppression)来解决所有问题?是否有自动化此过程的最佳实践?我假设需要某种形式的自定义代码,但想确认一下是否有可能避免这样做。

谢谢。

您可以将其匿名化。这样信息得以保留,但用户身份会被隐藏。

另一个可行的方案是实施自定义逻辑:在创建用户时,不直接创建用户账户,而是将其添加到一个新组中。这样,摘要内容就仅限于能够访问该分类的用户可见。

您还可以执行某种定时任务(cronjob),强制注销(或移除)所有已取消账户的用户。

谢谢你,@marianord。恐怕我还没有完全理解第二段。当你提到“而不是创建用户”时,你指的是用户生命周期的哪个阶段?我可能忽略了一个简单的要点,但我不太清楚这个建议的具体含义。能否请你澄清一下?

另外,我会查看匿名化功能,但对此有几个问题:

  • 他们的内容在显示时,帖子旁边的用户名会如何呈现?
  • 如果我成功让他们重新订阅我的会员(使用相同的电子邮件等),这是否会影响匿名化?也就是说,他们之前的帖子是否会再次显示他们的用户名?

再次感谢。

顺便提一下,我在此事中最担心的是摘要邮件,因为这是面向客户的操作(即发送邮件)。我想另一个选项是手动将他们的摘要配置更改为永不发送,对吗(尽管这又是一个手动步骤,但希望最终能通过某种 API 实现)。

如果可行,那么我实际上无需对用户进行任何操作。他们可以保留为 Discourse 中的有效用户,邮件将停止发送(见上文),但他们将无法再登录。

也许这样可行。对此您有什么看法?

通过 Discourse API 暂停用户可能是自动化此过程的好方法。当用户被暂停时,他们会被从 Discourse 登出,并且将不再接收摘要邮件。如果在暂停用户时提供了message,该消息将作为电子邮件发送给用户。这可用于鼓励他们续订会员资格。

需要注意的是,暂停功能原本是为处理难缠用户而设计的,并非针对可能在未来续订的过期会员情况。您可能会发现需要自定义站点的 user_notifications.account_suspended.text_body_template 文本,以调整发送给被暂停用户的电子邮件模板。

由匿名化用户创建的帖子显示如下:

目前没有简单的方法来取消用户的匿名化。我所知道的唯一方法是通过 Rails 控制台将匿名用户与新用户合并。由于匿名化会删除用户的所有识别数据,因此可能很难确定要合并哪些账户。如果用户有可能续订会员资格,暂停用户可能是更好的选择。

谢谢,@simon,这非常有帮助。

是的,根据你的说法,暂停似乎是这里正确的做法。但我对发送的电子邮件有一个疑问。我有基于 CRM 的电子邮件,当用户取消时会发送,所以我不希望 Discourse 发送任何内容。

你提到:“如果在暂停用户时提供了 message,该消息将作为电子邮件发送给用户。”

如果我不提供消息,是否意味着不会发送任何内容,我也完全不需要更新模板(因为它永远不会被发送)?

只是关于暂停功能,我对“暂停原因”和电子邮件字段的使用方式有点不清楚。

基本上,我的目标是暂停用户,除此之外什么都不做 :slight_smile:

再次感谢。

这是正确的。测试的最简单方法是创建一个使用一次性邮箱地址的用户,并通过界面尝试暂停和恢复其账户。

当用户被暂停时,必须设置 suspended_untilreason 字段。这些字段会在被暂停用户尝试登录网站时显示给他们。您可以通过在“管理 / 自定义 / 文本”页面搜索 login.suspended_with_reason 来自定义此文本。

除非您启用了 hide suspension reasons 站点设置,否则被暂停用户的用户卡片和个人资料页面上会显示一条通知,说明该用户已被暂停。如果您启用了 hide suspension reasons 站点设置,则只有工作人员能看到该通知。