Automatisches Hinzufügen neuer Benutzer (aus WP-Integration) zu einer Gruppe

Ich entschuldige mich, falls dies bereits gefragt wurde, aber ich suche nach einer Möglichkeit, Benutzer, die über die WP-Integration (SSO) hinzugefügt wurden, automatisch einer bestimmten Benutzergruppe hinzuzufügen.

Ich konnte keine Dokumentation finden, wie dies zu bewerkstelligen ist, daher wäre jede Anleitung willkommen :slight_smile:

Passen Sie auf sich auf und sprechen wir bald,

Alex

Ich nehme an, du verwendest das WP Discourse-Plugin für SSO. Dieses Plugin verfügt über einige Funktionen, die zur Verwaltung der Discourse-Gruppenmitgliedschaft genutzt werden können. Sieh dir Manage group membership in Discourse with WP Discourse SSO an, um Details zur Verwendung der Funktionen zu erhalten. Ich werde diesen Beitrag bald aktualisieren, um ein allgemeineres Beispiel hinzuzufügen. Lass mich wissen, falls etwas im Beitrag unklar ist.

Hey Simon – ja, das stimmt, ich verwende das WP Discourse-Plugin. Danke für den Link zu diesem Thema. Ich werde das Update im Auge behalten, aber falls es hilft: Der spezifische Fall betrifft WooCommerce Memberships & Subscriptions. Dennoch plane ich ohnehin, die Benutzerregistrierungen nur auf zahlende Mitglieder zu beschränken. Solange es sich also um ein allgemeines Beispiel handelt, das jedes neue Mitglied automatisch einer Gruppe namens everybody hinzufügt (nur zur Information: Das Ziel ist hier lediglich, das Versenden von Nachrichten und das Markieren von Mitgliedern in Ankündigungen insgesamt zu erleichtern), ist das in Ordnung.

Pass auf dich auf und bis bald!

Ja, genau dieses Beispiel fehlt im verlinkten Thema. Du kannst Benutzer mithilfe des SSO-Parameters add_groups als Teil des SSO-Login-Prozesses zu einer Gruppe hinzufügen. Standardmäßig sendet das WP Discourse-Plugin diesen Parameter nicht mit dem SSO-Payload, aber das Plugin verfügt über einen Filter, der verwendet werden kann, um diesen Parameter zum SSO-Payload hinzuzufügen.

Der folgende Code, der zu deiner Theme-Datei functions.php oder zu einem Plugin hinzugefügt wird, sollte bei dir funktionieren. Auf diese Weise kannst du Benutzer zu mehreren Gruppen hinzufügen. Der Parameter add_groups akzeptiert eine durch Kommas getrennte Liste von Gruppennamen (ohne Leerzeichen vor oder nach den Kommas):

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

    return $params;
}

Wenn du nur bestimmte Benutzer zur Gruppe hinzufügen möchtest, könntest du die Funktion wie folgt aufrufen:

add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params', 10, 2 );
function wpdc_custom_sso_params( $params, $user ) {
    if (/*hier eine Bedingung hinzufügen, um zu prüfen, ob der Benutzer zur Gruppe hinzugefügt werden soll */) {        
        $params['add_groups'] = 'your_group_name'; 
    }

    return $params;
}

Du kannst Benutzer auch mit dem SSO-Parameter remove_groups aus Gruppen entfernen.

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

    return $params;
}

oder

add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params', 10, 2 );
function wpdc_custom_sso_params( $params, $user ) {
    if (/*hier eine Bedingung hinzufügen, um zu prüfen, ob der Benutzer aus der Gruppe entfernt werden soll */) {        
        $params['remove_groups'] = 'your_group_name'; 
    }

    return $params;
}

Der größte Nachteil dieses Ansatzes im Vergleich zur Verwendung der Funktion add_user_to_discourse_group, auf die ich verlinkt habe, besteht darin, dass bestehende Benutzer sich ausloggen und dann erneut bei Discourse anmelden müssen, bevor ihre Gruppenmitgliedschaften aktualisiert werden.

Super, danke, Simon! Aus Interesse: Wäre es zu aufwendig, ein Beispiel für WooCommerce Memberships aufzunehmen?

Es wäre wirklich hilfreich, wenn die Personen automatisch aus der Gruppe entfernt würden, sobald keine aktive WooCommerce-Abonnement mehr besteht, und nur dann wieder hinzugefügt würden, wenn ein solches vorliegt – so wäre keine manuelle Prüfung nötig und alles wäre vollständig automatisiert (bei Stornierungen und erneuten Aktivierungen von Plänen usw.). Denn die Berechtigungen in Discourse können so eingeschränkt werden, dass Personen nur dann Beiträge sehen oder verfassen können, wenn sie ein aktives Abonnement haben und Mitglied der Gruppe sind, zu der sie hinzugefügt werden…

Jede Anleitung, die ich einem Entwickler geben kann, um dies umzusetzen, wäre super hilfreich.

Viele Grüße,

Alex

Es sollte möglich sein, Benutzer automatisch aus einer Discourse-Gruppe zu entfernen, wenn ihre WooCommerce-Mitgliedschaft abgelaufen ist. Dafür verwenden Sie die Funktion remove_user_from_discourse_group, auf die ich verlinkt habe.

Ich bin mit dem WooCommerce Memberships & Subscriptions-Plugin nicht so vertraut, um zu wissen, welche Action-Hooks beim Erstellen oder Stornieren einer Mitgliedschaft aufgerufen werden. Möglicherweise kennen andere Mitglieder der Meta-Community eine Lösung dafür. Sie könnten auch ein Thema in unserer Kategorie Marketplace erstellen, um einen Entwickler zu finden, der dabei hilft.

Alles klar, vielen Dank dafür, Simon. Ich werde mich darum kümmern und schauen, ob ich einen Entwickler mit Erfahrung in Discourse finden kann (und werde ihm das weiterleiten). Apropos: Hast du aus Interesse eine Liste vertrauenswürdiger Experten, die du für diese Art von Arbeit empfehlen könntest?

Ich habe keine Liste von Mitgliedern dieses Forums, die WordPress/Discourse-Integrationen durchführen. Mich würde interessieren, welche Entwickler in der Meta-Community daran interessiert sind, mit WordPress/Discourse zu arbeiten.

Ich habe keine negativen Berichte über Community-Mitglieder im Zusammenhang mit WordPress-Integrationen erhalten. Wenn du einen Entwickler mit einer Historie in der Community einstellst, solltest du auf der sicheren Seite sein. Ich beantworte gerne Fragen zur Erstellung von Integrationen auf Basis des WP Discourse-Plugins. Entwickler können mich gerne kontaktieren, wenn sie bei etwas hängen bleiben.

Super, ich denke, ich melde mich dann irgendwann mal! Vielleicht bündele ich all diese Änderungen in einem kleinen Add-on/Erweiterung für das WP Discourse-Plugin. Mal sehen. :slight_smile: