La documentazione per la configurazione del plugin in una rete multisito non è aggiornata. Questa è un’ottima occasione per sistemarla e aggiornare la guida installazione e configurazione del plugin WP Discourse.
Per utilizzare la funzionalità del client SSO in una rete multisito, il plugin deve essere configurato a livello di rete. Questo si fa cliccando sul link Discourse nella tua Dashboard di Rete:
Nella pagina di rete di Discourse, seleziona l’opzione Abilita configurazione multisito. Quindi inserisci l’URL di Discourse, la chiave API e il nome utente per la pubblicazione nella sezione Impostazioni di connessione. Scorri fino in fondo alla pagina e clicca sul pulsante Salva opzioni. Dovresti vedere un messaggio “Sei connesso a Discourse!” in alto nella pagina.
Per utilizzare Discourse come provider SSO per i siti della tua rete multisito, scorri fino in fondo alla pagina di rete di Discourse e seleziona l’opzione Abilita client SSO. Aggiungi inoltre una chiave all’impostazione Segreto SSO. Salva nuovamente le opzioni.
Ora vai sul tuo sito Discourse e copia la chiave segreta nell’impostazione del sito sso provider secrets di Discourse. Inserisci il simbolo * come dominio del provider SSO. Quando l’impostazione è stata salvata, dovrebbe apparire in modo simile a questo:
Ora seleziona l’opzione enable sso provider su Discourse.
Con queste impostazioni attive, andando alla scheda SSO / Client SSO di WP Discourse per qualsiasi sito della tua rete, dovresti vedere una pagina simile a questa:
Per un test rapido, seleziona le opzioni Aggiungi link di accesso e Sincronizza utenti esistenti per email. Quindi esci dal tuo sito WordPress. Dovresti essere in grado di accedere nuovamente cliccando sul link “Accedi con Discourse” che verrà visualizzato sulla tua pagina wp-login.php.
Se non stai utilizzando la pagina di accesso predefinita di WordPress, prova a copiare lo shortcode [discourse_sso_client] in un post del tuo sito. Questo shortcode visualizza markup sulla pagina solo per gli utenti disconnessi. Puoi anche creare un link di accesso costruendo un link in questo formato:
<a href="https://example.com/?discourse_sso=1&redirect_to=https://example.comt/">Accedi con Discourse</a>
Ciò effettuerà l’accesso dell’utente al tuo sito tramite Discourse e lo reindirizzerà alla pagina WordPress impostata come valore del parametro redirect_to.
In base al tuo debug, sembra che l’opzione Abilita client SSO non fosse attivata nella tua pagina di rete di Discourse. Puoi assicurarti che tale opzione sia abilitata e farmi sapere se hai ancora problemi?
Il codice che hai trovato e che impediva il funzionamento del client SSO per te è corretto, ma presenta una condizione mal scritta:
if ( empty( $this->options['sso-client-enabled'] ) || 1 !== intval( $this->options['sso-client-enabled'] ) )
Dovrebbe essere semplificato in if ( empty( $this->options['sso-client-enabled'] ) ). Questo è lo schema utilizzato ovunque nel plugin.