好的,我已经找到了一个变通方法,可以“修复”Patreon 登录的问题。具体操作说明如下。![]()
你需要准备:
- 任意一个提供用于显示登录表单的短代码的插件(我的网站上安装了 WooCommerce,所以我使用了
[woocommerce_my_account]短代码,它正好能为未登录用户显示登录表单)。 - Members 插件,它提供
[members_logged_in]和[members_not_logged_in]短代码,可根据用户是否登录来隐藏或显示内容。你也可以使用其他提供类似短代码功能的插件。 - Shortcode Redirect 插件。
思路是创建一个特殊页面,该页面在未登录用户访问时显示登录表单(以及 Patreon 登录按钮)。如果用户已登录,则将其重定向到 https://community.morevnaproject.org/session/sso?return_path=%2F 网址。
(显然,你需要将 “community.morevnaproject.org” 替换为你自己的域名)。
我的特殊登录页面内容如下:
[members_not_logged_in]
[woocommerce_my_account]
[patreon_login_button]
[/members_not_logged_in]
[members_logged_in]
[redirect url='https://community.morevnaproject.org/session/sso?return_path=%2F' sec='0']
[/members_logged_in]
(你可以在这里看到实际效果:https://morevnaproject.org/log-in-discourse/)
接下来,只需配置 WP-Discourse 插件,使其使用该页面进行 SSO 即可:
当用户在 Discourse 中点击“登录”按钮时,会被重定向到我的特殊 WordPress 页面。由于用户尚未登录,页面会显示登录表单。如果用户点击“使用 Patreon 登录”按钮,则会被重定向到 Patreon 进行授权。授权成功后,用户会被重定向回我的特殊页面。由于此时用户已登录,redirect 短代码将被激活:
[redirect url='https://community.morevnaproject.org/session/sso?return_path=%2F' sec='0']
…随后用户即可成功重定向回 Discourse 论坛。
URL 末尾的 session/sso?return_path=%2F 部分是必需的,否则 Discourse 在重定向后将无法识别用户已登录。
就是这样!希望这能帮助其他希望在网站上实现 WordPress SSO 并集成 Patreon 登录的用户。![]()
