wp-discourse を使用して単一の WordPress で複数の Discourse サイト

WordPress がサブスクリプションと wp-discourse と連携したフォーラムを処理するクライアントがいます。すべて順調です。

しかし今、彼は追加の Discourse サイトを追加したいと考えており、それらはすべて単一の WordPress サイトに対して認証されます。最初の Discourse サイトから 2 番目のサイトにセットアップをコピーしようとしましたが、WordPress は最初の Discourse サイトにリダイレクトされます。次に、最初の Discourse サイトを 2 番目のサイトの discourse_connect サーバーにすることができるのではないかと考えましたが、それもまだ機能していません(それも最初の Discourse サイトにリダイレクトされ、2 番目のサイトはログインされません)。

単一の WordPress サイトで複数の Discourse サイトの認証を提供する方法はありますか?

「いいね!」 2

2つ以上のプラットフォームでシングルサインオンを使用する場合は、keycloak を使用するのが最も適切なソリューションです。
このアプローチは、シングルサインオンサーバーやソーシャルネットワーク経由での簡単なサインイン(それだけではありません)について考える必要がないため、優れています。
ユーザーを失うことなく、任意のサイトを追加および削除できます。

WP Discourseプラグインはこれを処理するように設定されていませんが、可能であるはずです。

Discourseのdiscourse_connect_url設定にsiteURLパラメータを追加することから始めることをお勧めします。WordPressでは、siteパラメータを使用して、ここにリダイレクトする正しいDiscourseサイトを設定します。

また、ここで行われるsync_ssoの呼び出しを処理する必要があるでしょう。wp-discourse/lib/sso-provider/discourse-sso.php at main · discourse/wp-discourse · GitHub

これについては確信がありませんが、WordPressがパラメータを削除しないように、この関数でsiteを許可されるクエリ変数に追加する必要があるかもしれません。wp-discourse/lib/sso-provider/discourse-sso.php at main · discourse/wp-discourse · GitHub

理想的には、上記の変更はWordPressのアクションとフィルターフックを使用して達成できるでしょう。それにはコードにフックを追加する必要があるようです。

この仕様にWordPressから複数のDiscourseサイトへの投稿の公開が含まれていないと仮定します。その場合、必要な変更はもう少し複雑になります。

他に思いつく問題があればお知らせします。

編集:WordPressでDiscourseのユーザーIDがどのように使用されるかについて考える必要があります。これにより、複数のサイト間で競合が発生しないようにします。単一のWordPressユーザーは、複数のWordPressサイトにアカウントを持つ可能性があります。それらはサイトごとに異なるDiscourseユーザーIDを持つことになります。

編集:私が確認できる最大の課題は、WordPressサイトで「ログイン時にDiscourseユーザーを作成または同期する」設定が有効になっている場合です。これはDiscourseのsync_ssoルートへのAPI呼び出しを行います。同期または作成するDiscourseサイトを認識する方法が必要になります。また、サイトごとにDiscourse APIキーが必要になります。これは可能に見えますが、いくらかの複雑さが追加されるでしょう。

「いいね!」 3

それはありえそうですね。はい、彼は投稿には関心がなく、認証と、おそらくWooCommerceなどからのグループのプッシュだけを気にかけています。

これは、WordPressサイトでの購入時に、特定のDiscourseサイトでユーザーのグループメンバーシップを調整することを意味すると想定しています。それは可能だと思いますが、sync_ssoルートへのAPIリクエストで最もよく行われます。WP Discourseプラグインにはこれに使用できる関数がありますが、それらはプラグインのオプションページで設定されたDiscourse URLとAPIキーを使用します:https://github.com/discourse/wp-discourse/blob/main/lib/utilities.php#L278-L326。おそらく、プラグインはそのパラメータにフィルターフックを追加して、条件付きで設定できるようにすることができます。

「いいね!」 3

私たちは同様のセットアップを検討しているので、私もソリューションに興味があります。

「いいね!」 1

彼が開発のためにプレイしたいかどうか尋ねたとき、返事がなかったと思います(他のことで忙しいのだと思います)。

予算があれば、それが助けになるかもしれません。

まだ探索段階なので、正式な予算はありません。しかし、開発者による支援と、いくらかの資金提供は可能です。クライアントも協力していただけるなら、資金を出し合って何かできるかもしれません。

「いいね!」 1