Wordpress 多站点配合多个 Discourse 实例

关于在 multisite 网络中设置该插件的文档已过时。这是一个整理并更新 WP Discourse 插件安装与设置 指南的好机会。

要在 multisite 网络上使用 SSO 客户端功能,需要在网络级别配置该插件。这可以通过点击网络仪表板上的 Discourse 链接来完成:

在 Discourse 网络页面上,选择“启用 multisite 配置”选项。然后在“连接设置”部分输入您的 Discourse URL、API 密钥和发布用户名。滚动到页面底部并点击“保存选项”按钮。您应该在页面顶部看到“您已连接到 Discourse!”的消息。

要将 Discourse 用作您 multisite 网络上各站点的 SSO 提供商,请滚动到 Discourse 网络页面底部,选择“启用 SSO 客户端”选项。同时,在 SSO 密钥设置中添加一个密钥。再次保存您的选项。

现在,前往您的 Discourse 站点,将密钥复制到 Discourse 的 sso provider secrets 站点设置中。在 SSO 提供商域名中输入 * 符号。保存该设置后,它应类似于以下内容:

现在在 Discourse 上选择“启用 SSO 提供商”选项。

设置好这些配置后,访问您网络上任何站点的 WP Discourse SSO / SSO 客户端标签页,应该会显示类似于以下的页面:

为了快速测试,请选择“添加登录链接”和“按邮箱同步现有用户”选项。然后退出您的 WordPress 站点。您应该能够通过点击显示在 wp-login.php 页面上的“使用 Discourse 登录”链接重新登录。

如果您未使用默认的 WordPress 登录页面,可以尝试将 [discourse_sso_client] 短代码复制到您站点的一篇帖子中。该短代码仅对未登录用户显示页面标记。您也可以通过构造如下形式的链接来创建登录链接:

<a href="https://example.com/?discourse_sso=1&redirect_to=https://example.comt/">Log in with Discourse</a>

这将使用 Discourse 将用户登录到您的站点,然后将其重定向回您设置为 redirect_to 参数值的 WordPress 页面。

根据您的调试结果,似乎您的 Discourse 网络页面上未启用“启用 SSO 客户端”选项。请确保该选项已启用,并告知我们是否仍存在问题。

您发现的阻止 SSO 客户端正常工作的代码是正确的,但其条件语句编写不当:

if ( empty( $this->options['sso-client-enabled'] ) || 1 !== intval( $this->options['sso-client-enabled'] ) )

应简化为 if ( empty( $this->options['sso-client-enabled'] ) )。这是插件中其他位置使用的模式。

3 个赞