マルチサイトネットワークでのプラグイン設定に関するドキュメントが最新ではありません。これを機会に整理し、WP Discourse プラグインのインストールとセットアップ ガイドを更新しましょう。
マルチサイトネットワークで SSO クライアント機能を使用するには、プラグインをネットワークレベルで設定する必要があります。これは、ネットワークダッシュボードにある Discourse リンクをクリックすることで実行します。
Discourse ネットワークページで、「Enable Multisite Configuration」オプションを選択します。次に、「Connection Settings」セクションに Discourse の URL、API キー、および投稿用ユーザー名を入力します。ページの下までスクロールして「Save Options」ボタンをクリックします。ページ上部に「You are connected to Discourse!」というメッセージが表示されるはずです。
マルチサイトネットワーク上のサイト向けに Discourse を SSO プロバイダーとして使用するには、Discourse ネットワークページの下部までスクロールし、「Enable SSO Client」オプションを選択します。また、「SSO Secret Key」設定にキーを追加してください。オプションを再度保存します。
次に、Discourse サイトに移動し、シークレットキーを Discourse の sso provider secrets サイト設定にコピーします。SSO プロバイダードメインには * 記号を入力します。この設定が保存されると、以下のように表示されます。
Discourse で enable sso provider オプションを選択します。
これらの設定が完了すると、ネットワーク上の任意のサイトの WP Discourse SSO / SSO クライアントタブに移動すると、以下のようなページが表示されます。
簡単なテストとして、「Add Login Link」と「Sync Existing Users by Email」オプションを選択します。次に、WordPress サイトからログアウトしてください。wp-login.php ページに表示される「Login with 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 ネットワークページで「Enable SSO Client」オプションが有効になっていなかったようです。このオプションが有効になっているか確認し、引き続き問題が発生する場合はお知らせください。
SSO クライアントの動作を妨げていたコードは正しいですが、条件式が不適切に記述されています。
if ( empty( $this->options['sso-client-enabled'] ) || 1 !== intval( $this->options['sso-client-enabled'] ) )
これは if ( empty( $this->options['sso-client-enabled'] ) ) に簡略化すべきです。これはプラグインの他の場所でも使用されているパターンです。


