Aggiunta automatica di nuovi utenti (dall'integrazione WP) a un gruppo

Mi scuso se questa domanda è già stata fatta, ma sto cercando un modo per aggiungere automaticamente gli utenti che sono stati aggiunti tramite l’integrazione WP (SSO) a un determinato gruppo di utenti.

Non sono riuscito a trovare alcuna documentazione su come farlo, quindi qualsiasi guida sarebbe apprezzata :slight_smile:

A presto e buona giornata,

Alex

Suppongo che tu stia utilizzando il plugin WP Discourse per SSO. Tale plugin dispone di alcune funzioni che possono essere utilizzate per gestire l’iscrizione ai gruppi Discourse. Consulta Manage group membership in Discourse with WP Discourse SSO per i dettagli su come utilizzare le funzioni. Aggiungerò presto a quel argomento un esempio più generale. Fammi sapere se c’è qualcosa nell’argomento che non è chiaro.

Ciao Simon – sì, è corretto, sto usando il plugin WP Discourse. Grazie per aver collegato questo argomento; terrò d’occhio l’aggiornamento, ma se può essere d’aiuto, il caso specifico riguarda l’uso di WooCommerce Memberships e Subscriptions. Detto questo, intendo comunque limitare le registrazioni degli utenti ai soli membri paganti, quindi purché si tratti di un esempio generico che permetta di aggiungere ogni nuovo membro a un gruppo che ho chiamato everybody (solo per contestualizzare, l’obiettivo qui è semplicemente rendere più semplice la messaggistica e il tagging dei membri negli annunci).

A presto e buona giornata!

Sì, è proprio quell’esempio che manca nel thread a cui ho fatto riferimento. Puoi aggiungere gli utenti a un gruppo come parte del processo di accesso SSO utilizzando il parametro SSO add_groups. Per impostazione predefinita, il plugin WP Discourse non invia questo parametro nel payload SSO, ma il plugin include un filtro che può essere utilizzato per aggiungere tale parametro al payload SSO.

Il seguente codice, aggiunto al file functions.php del tuo tema o a un plugin, dovrebbe funzionare per te. In questo modo puoi aggiungere gli utenti a più gruppi. Il parametro add_groups accetta un elenco di nomi di gruppo separati da virgole (senza spazi prima o dopo le virgole):

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

    return $params;
}

Se volessi aggiungere solo utenti specifici al gruppo, potresti chiamare la funzione in questo modo:

add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params', 10, 2 );
function wpdc_custom_sso_params( $params, $user ) {
    if (/*aggiungi qui una condizione per verificare se l'utente deve essere aggiunto al gruppo */) {        
        $params['add_groups'] = 'your_group_name'; 
    }

    return $params;
}

Puoi anche rimuovere gli utenti dai gruppi utilizzando il parametro SSO remove_groups.

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

    return $params;
}

o

add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params', 10, 2 );
function wpdc_custom_sso_params( $params, $user ) {
    if (/*aggiungi qui una condizione per verificare se l'utente deve essere rimosso dal gruppo */) {        
        $params['remove_groups'] = 'your_group_name'; 
    }

    return $params;
}

Lo svantaggio principale di questo approccio, rispetto all’uso della funzione add_user_to_discourse_group a cui ho fatto riferimento, è che richiede agli utenti esistenti di disconnettersi e poi riaccedere a Discourse prima che le loro appartenenze ai gruppi vengano aggiornate.

Fantastico, grazie Simon! Per curiosità, sarebbe troppo difficile includere un esempio per WooCommerce Memberships?

Sarebbe davvero utile se rimuovesse automaticamente le persone dal gruppo quando non c’è più un abbonamento WooCommerce attivo e le aggiungesse al gruppo solo quando ce n’è uno, in modo da non richiedere alcuna revisione manuale e rendere tutto completamente automatizzato (quando i piani vengono annullati e riattivati, ecc.). Questo perché le autorizzazioni in Discourse possono essere limitate per consentire alle persone di visualizzare o pubblicare solo se hanno un abbonamento attivo (e sono nel gruppo a cui questo le aggiunge)…

Qualsiasi indicazione che potrei trasmettere a uno sviluppatore per far implementare questa funzionalità sarebbe estremamente utile.

A presto,

Alex

Dovrebbe essere possibile rimuovere automaticamente gli utenti da un gruppo Discourse quando la loro iscrizione WooCommerce è scaduta. Per farlo, dovresti utilizzare la funzione remove_user_from_discourse_group a cui ho fatto riferimento.

Non conosco abbastanza il plugin WooCommerce Memberships & Subscriptions da sapere quali hook di azione vengono chiamati quando un’iscrizione viene creata o annullata. Forse altri membri della community Meta sapranno come farlo. Potresti anche creare un argomento nella nostra categoria Marketplace per trovare uno sviluppatore che ti aiuti con questo.

Perfetto, grazie Simon. Darò un’occhiata e cercherò di assumere uno sviluppatore con esperienza su Discourse (e gli passerò queste informazioni). A proposito – per curiosità, hai una lista di esperti di cui ti fidi che puoi consigliare per questo tipo di lavoro?

Non ho una lista di membri di questo forum che si occupano di integrazioni tra WordPress e Discourse. Sarei interessato a sapere quali sviluppatori della comunità Meta sono interessati a lavorare con WordPress/Discourse.

Non ho ricevuto segnalazioni negative riguardanti membri della comunità in relazione alle integrazioni con WordPress. Se assumi uno sviluppatore con una storia nella comunità, dovresti essere al sicuro. Sono sempre felice di rispondere a domande relative alla creazione di integrazioni basate sul plugin WP Discourse. Gli sviluppatori sono liberi di contattarmi se si bloccano su qualsiasi cosa.

Ottimo, immagino che ci sentiremo prima o poi! Potrebbe finire per raggruppare tutte queste modifiche in una piccola estensione/add-on per il plugin WP Discourse, vediamo. :slight_smile: