WP統合から新規ユーザーを自動的にグループに追加

以前に同じ質問があった場合は申し訳ありませんが、WP 統合(SSO)を通じて追加されたユーザーを特定のユーザーグループに自動的に追加する方法を探しています。

これを実現する方法に関するドキュメントが見つからなかったため、ご助言いただけますと幸いです :slight_smile:

お気をつけて、またお話ししましょう。

Alex

「いいね!」 2

WP Discourse プラグインを SSO に使用しているものと推測します。このプラグインには、Discourse のグループメンバーシップを管理するために使用できるいくつかの関数があります。関数の使用方法の詳細については、Manage group membership in Discourse with WP Discourse SSO をご覧ください。近日中に、より一般的な例を追加するためにそのトピックを更新する予定です。トピックの内容で不明な点があれば、お知らせください。

「いいね!」 3

サイモンさん、こんにちは。はい、その通りです。WP Discourse プラグインを使用しています。このトピックへのリンクをありがとうございます。アップデートを注視しておきますが、参考になればと思い、具体的なケースは WooCommerce Memberships と Subscriptions を使用していることです。ただ、私はユーザー登録を有料会員に限定する予定ですので、新しく登録されたメンバーを「everybody」というグループに追加できる一般的な例であれば問題ありません(参考までに、ここでの目的は、メンバーへのメッセージ送信や投稿時のタグ付けを announcements で一括して簡単に行うことです)。

では、お元気で、また近々お話ししましょう!

「いいね!」 1

はい、私がリンクしたトピックに不足していたのがまさにその例です。SSO ログインプロセスの一環として、add_groups SSO パラメータを使用してユーザーをグループに追加できます。デフォルトでは、WP Discourse プラグインは SSO ペイロードにこのパラメータを送信しませんが、このパラメータを SSO ペイロードに追加するために使用できるフィルタがプラグインに備わっています。

以下のコードを、お使いのテーマの functions.php ファイルまたはプラグインに追加すれば機能します。この方法で、複数のグループにユーザーを追加することも可能です。add_groups パラメータは、カンマ区切りのグループ名のリストを受け取ります(カンマの前後にスペースを入れないようにしてください)。

add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params' );
function wpdc_custom_sso_params( $params ) {
    $params['add_groups'] = 'your_group_name'; 

    return $params;
}

特定のユーザーのみをグループに追加したい場合は、以下のように関数を呼び出します。

add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params', 10, 2 );
function wpdc_custom_sso_params( $params, $user ) {
    if (/*ユーザーをグループに追加するかどうかをチェックする条件をここに追加 */) {        
        $params['add_groups'] = 'your_group_name'; 
    }

    return $params;
}

また、remove_groups SSO パラメータを使用して、ユーザーをグループから削除することもできます。

add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params' );
function wpdc_custom_sso_params( $params ) {
    $params['remove_groups'] = 'your_group_name'; 

    return $params;
}

または

add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params', 10, 2 );
function wpdc_custom_sso_params( $params, $user ) {
    if (/*ユーザーをグループから削除するかどうかをチェックする条件をここに追加 */) {        
        $params['remove_groups'] = 'your_group_name'; 
    }

    return $params;
}

このアプローチの主な欠点は、私がリンクした add_user_to_discourse_group 関数を使用する場合と比較して、既存のユーザーがグループメンバーシップを更新するには、Discourse からログアウトしてから再度ログインする必要があることです。

「いいね!」 5

素晴らしい、サイモンさん、ありがとうございます!興味本位ですが、WooCommerce Memberships の例を追加するのは難しいでしょうか?

もし、WooCommerce のサブスクリプションが有効でなくなった際に自動的にグループから人を削除し、有効な場合のみグループに追加してくれると非常に助かります。そうすれば、手動での確認が不要になり、すべてが完全に自動化されます(プランのキャンセルや再アクティブ化などの際に)。Discourse の権限設定では、有効なサブスクリプションを持つ人(つまり、このプラグインが追加するグループにいる人)のみが閲覧や投稿を許可されるように制限できるためです…

開発者に渡してこの機能を追加してもらうためのガイドラインがあれば、非常に役立ちます。

では、お気をつけて。

アレックス

WooCommerce のメンバーシップが期限切れになった際に、Discourse グループからユーザーを自動的に削除することは可能です。そのためには、私がリンクした remove_user_from_discourse_group 関数を使用します。

WooCommerce Memberships & Subscriptions プラグインについて詳しくないため、メンバーシップの作成やキャンセル時にどのアクションフックが呼び出されるかはわかりません。Meta コミュニティの他のメンバーが知っているかもしれません。また、Marketplace カテゴリにトピックを作成して、この作業を支援してくれる開発者を見つけることもできます。

「いいね!」 2

なるほど、シモンさん、ありがとうございます。確認して、Discourseの経験がある開発者を雇えないか見てみます(その情報も共有します)。そういえば、興味本位で伺うのですが、このような作業におすすめできる信頼できる専門家リストはありますか?

WordPress と Discourse の統合を行っている当フォーラムのメンバーの一覧は持っておりません。Meta コミュニティの中で、WordPress と Discourse の統合に興味がある開発者が誰かを知りたいと考えています。

WordPress 統合に関連して、コミュニティメンバーに対して否定的な報告は受けておりません。コミュニティ内で実績のある開発者を雇えば、安全であるはずです。WP Discourse プラグインを基盤とした統合構築に関するご質問には、いつでもお答えいたします。開発者の方が何かでつまずいた場合は、お気軽にメッセージをお送りください。

「いいね!」 2

素晴らしい、いずれご連絡いたしますね!これらの変更をすべて WP Discourse プラグインの小さなアドオン/拡張機能にまとめるかもしれません。楽しみです。:slight_smile: