WP Discourse プラグインを使用すると、WordPress で DiscourseConnect を設定でき、ユーザーは WordPress アカウントで Discourse にログインしたり、Discourse アカウントで WordPress にログインしたりできます。DiscourseConnect を設定する前に、まず WordPress に WP Discourse プラグインをインストールし、Discourse と接続する必要があります。準備が整ったら、この短いビデオをご覧ください。または、以下の手順に従ってください。
次のステップ
DiscourseConnect の設定が完了したら、以下のトピックもご覧ください。
手順
秘密鍵の設定
WP Discourse を DiscourseConnect プロバイダーとして設定する場合でも、クライアントとして設定する場合でも、秘密鍵を設定する必要があります。「DiscourseConnect Secret Key」タブに移動し、10 文字以上の文字列(数字、文字、記号すべて使用可能)を入力してください。この鍵の作成には、強力なパスワードを作成するのと同じルールを使用してください。設定完了後は必ず保存してください。
次に、Discourse サイトの設定(管理パネル内)を開き、「discourse connect」を検索します。上部付近の設定の一つに「discourse connect secret」という項目があります。WP Discourse で設定した秘密鍵をここに貼り付け、緑色のチェックマークをクリックしてください。
WordPress で Discourse にログインする(DiscourseConnect プロバイダー)
これらの手順を実行する前に、WP Discourse が Discourse と接続されており、秘密鍵が設定されていることを確認してください(
)
ユーザーが WordPress アカウント情報を使って Discourse にログインできるようにするには、WP Discourse を DiscourseConnect プロバイダーとして設定する必要があります。WP Discourse 設定の「DiscourseConnect Provider」タブに移動し、「Enable DiscourseConnect Provider」チェックボックスを選択して設定を保存してください。
次に、Discourse サイトの設定に移動し、検索ボックスに「discourse connect」と入力して、すべての DiscourseConnect 設定を表示します。まず、「discourse connect url」を WordPress の URL に設定します。最後のステップは、「enable discourse connect」を選択することです。このオプションを選択すると、ユーザーは WordPress を通じてのみ Discourse にログインできるようになるため、準備が整うまで選択しないでください。
Discourse で discourse connect を有効にした後、設定が正しく行われたか確認するために、ブラウザでシークレットウィンドウを開いてください。通常の(シークレットではない)ブラウザウィンドウでは、何か問題が発生して設定を元に戻す必要がある場合に備えて、管理者アカウントでログインしたままにしておきます。シークレットウィンドウでは、Discourse の「サインアップ」ボタンが表示されなくなることに気づくはずです。「ログイン」ボタンをクリックしてください。WordPress のログイン画面が表示されるはずです。WordPress の認証情報を入力してログインすると、Discourse にリダイレクトされ、ログイン状態になります。
何か問題が発生した場合、または何かおかしいことに気づいた場合は、通常のブラウザウィンドウに戻り、「enable discourse connect」を無効にして、ユーザーが通常通り Discourse にログインできるようにしてください。何らかの理由で通常のブラウザウィンドウで管理者アカウントにログインしていない場合は、以下のトラブルシューティングセクションにある「Discourse コンソールを介して DiscourseConnect を無効にする」を参照して、Discourse へのアクセス権を取り戻してください。
メール検証
Discourse はすべてのユーザーのメールアドレスの検証を求めていますが、WordPress はユーザーにメールアドレスの検証を強制しません。デフォルトの WordPress 設定では、登録プロセス中にユーザーのメールアドレスを検証するのは比較的簡単ですが、フロントエンドの登録フォームを作成するプラグイン(例えば、WooCommerce で追加できる登録フォームなど)を使用している場合、WP Discourse プラグインはユーザーのメールアドレスを検証できません。
WordPress でユーザーのメールアドレスが検証されていない場合、WordPress ユーザーがフォーラムにログインするには、Discourse から送信されるメール検証通知に応答する必要があります。この動作をオーバーライドするために使用できるフィルタがいくつかプラグインに含まれています。詳細については、こちら からコードをご覧ください。
require_activation フラグの削除
WordPress がメールアドレスを認証していることが確実な場合、Discourse に対してその必要がないことを伝えることができます。require_activation フラグを完全に削除するには、WordPress(例:テーマの functions.php ファイル内)に以下のようなコードを追加してください。
// 'my_prefix' をサイトのプレフィックスに置き換えてください。
add_filter( 'discourse_email_verification', 'my_prefix_discourse_email_verification' );
function my_prefix_discourse_email_verification( $require_activation ) {
return false;
}
特定のユーザーに対して require_activation フラグを削除するには、以下のようなコードを使用してください。
// 'my_prefix' をサイトのプレフィックスに置き換えてください。
add_filter( 'discourse_email_verification', 'my_prefix_discourse_email_verification', 10, 2 );
function my_prefix_discourse_email_verification( $require_activation, $user_id ) {
$user = get_userdata( $user_id );
if ( /* $user に対してテストするいくつかの条件 */ ) {
return true;
}
return false;
}
ユーザーデータ Webhook
この Webhook は歴史的な理由で存在しています。Discourse 名フィールドを自動的に埋めることは、DiscourseConnect プロバイダーオプションの「ログイン時に Discourse ユーザーを作成または同期」を使用することで現在可能です。
「Update Userdata」Webhook(「Webhooks」設定パネル内)は、WordPress が Discourse の DiscourseConnect プロバイダーとして機能している場合に使用できます。この Webhook は、WordPress 上でユーザーの Discourse 名フィールドを自動的に埋めます。
DiscourseConnect ログインリンクの作成
DiscourseConnect プロバイダーオプションが有効になっている場合、以下の構造を持つリンクを作成することで、WordPress サイトに DiscourseConnect ログインリンクを追加できます。
<a href="https://discourse.example.com/session/sso?return_path=/">コミュニティ</a>
return_path の値を、ユーザーが最終的に到達してほしいフォーラムのページに設定してください。この構造の URL を WordPress ダッシュボードの「メニュー」セクションの「カスタムリンク」として追加することで、WordPress メニューに SSO ログインリンクを追加できます。
Discourse で WordPress にログインする(DiscourseConnect クライアント)
サイトを Discourse の DiscourseConnect クライアントとして機能させるには、「DiscourseConnect Client」タブをクリックしてください。そのページで、「Enable DiscourseConnect Client」と「Add Login Link」オプションを選択します。
次に、Discourse の管理/設定ページに移動し、「discourse connect」を検索して、すべての DiscourseConnect オプションを表示します。
- 「enable discourse connect provider」設定を選択
- WordPress から「DiscourseConnect Secret Key」をコピーし、Discourse の「discourse connect provider secrets」設定の「secret」フィールドに貼り付けます。その設定の「domain」フィールドには、WordPress サイトのドメインを入力してください。その後、緑色のチェックマークをクリックして設定を保存します。
完了すると、Discourse の「discourse connect provider secrets」設定は以下のようになります(ドメインが WordPress のドメインに設定されている場合):
これで、Discourse が WordPress サイトの DiscourseConnect プロバイダーとして機能するようになります。
ブラウザでシークレットウィンドウを開き、WordPress サイトを開いてください。ログインページに移動すると、ログインフォームの下に「Discourse でログイン」というリンクが表示されます。それをクリックすると、Discourse のログインフォームに移動します。そこでログインすると、WordPress のログインページに戻され、アカウントを Discourse と同期する必要があるという通知が表示されます。通知内の指示に従ってアカウントをリンクすると、Discourse を通じて WordPress サイトにログインできるようになります。
注:この動作は、WordPress と Discourse の両方に既存のアカウントを持つユーザーにのみ影響します。Discourse DiscourseConnect を通じて作成された新しい WordPress アカウントは、「Discourse でログイン」リンクを初めてクリックした際に自由に WordPress にログインできます。WordPress サイトと Discourse フォーラムの両方に既存のアカウントを持つユーザーが Discourse を通じてログインしやすくするには、「DiscourseConnect Client」オプションタブで「Sync Existing Users by Email」チェックボックスを選択してください。
Discourse ログアウトの同期
DiscourseConnect が有効になっている場合、Discourse からのログアウトを WordPress サイトと同期するには、Discourse サイト設定の「logout redirect」に、クエリパラメータ request=logout を付加したサイトの home_url を追加します。この設定は、/admin/site_settings/category/users の Discourse 設定セクションにあります。以下は「logout redirect」URL の例です。
http://example.com/?request=logout
トラブルシューティング
WordPress をフォーラムの DiscourseConnect プロバイダーとして使用している際に問題が発生した場合は、最初に以下の点を確認してください。
- WordPress と Discourse に設定された DiscourseConnect 秘密鍵が同じであること
- WordPress サイトで「Enable DiscourseConnect Provider」が選択されていること
- Discourse で正しい「discourse connect url」が入力されていること
DiscourseConnect を使用した際の「ログインエラー」
ユーザーが Discourse にログインしようとした際に「ログインエラー」メッセージが表示される場合は、以下をご覧ください。
Debug and fixing common DiscourseConnect issues.
DiscourseConnect の無効化
DiscourseConnect が正常に動作しない場合は、「enable discourse connect」サイト設定を無効化してオフにできます。どこかで管理者アカウントにまだログインしていない場合は、オフにする方法がいくつかありますのでご安心ください。
/users/admin-login 経由でのログイン
新しいブラウザウィンドウを開き、URL バーにフォーラムの URL の後に /users/admin-login を入力してください。例:
https://community.mysite.com/users/admin-login
管理者のメールアドレスを入力する入力欄が表示されます。メールアドレスを送信すると、管理者アカウントに直接ログインできるリンクが記載されたメールが届きます。その後、サイト設定に移動し、「enable discourse connect」を無効化して DiscourseConnect をオフにしてください。
何らかの理由でこれが機能しない場合でも、心配しないでください。サーバーのコンソール(
)を介して DiscourseConnect をオフにすることができます。
サーバーコンソールを介した DiscourseConnect のオフ
サーバーコンソールが何か分からない場合、またはアクセスできない場合は、ホスティングプロバイダーにサポートを依頼してください。サーバーに SSH で接続した後、実行する必要があるコマンドは以下の通りです。
cd /var/discourse
./launcher enter app
rails c
SiteSetting.enable_discourse_connect=false
exit
exit







