Il problema non riguarda la cache degli oggetti di WordPress, per quanto ne so non è persistente tra le richieste. Il problema si verifica con siti che hanno una qualche forma di cache persistente: https://developer.wordpress.org/reference/classes/wp_object_cache/#persistent-caching. Questa può essere configurata tramite un plugin, ma è anche abilitata per impostazione predefinita da alcuni provider di hosting, ad esempio WP Engine. Penso che nel caso di WP Engine, non abilitino la cache degli oggetti sulla loro pagina di accesso, ma la abilitino per gli utenti anonimi su tutte le altre pagine. Quindi su WP Engine il problema viene attivato solo se il link “login with Discourse” viene aggiunto a una pagina diversa dalla pagina di accesso.
Il problema con discourse_sso_url è che quando è sempre impostato sullo stesso valore, per i siti che hanno una cache persistente abilitata, restituirà sempre lo stesso nonce. Impostare il suo valore discourse_sso su una stringa casuale, invece di impostarlo sul suo valore predefinito di 1, interrompe la cache. Almeno ha sempre funzionato in quel modo quando l’ho testato in precedenza. Al momento non ho le cose configurate per testarlo.
Modifica: ci sono alcuni dettagli in più sul problema qui: Discourse (as provider) + WP SSO nonce error - #14 by simon. È passato un bel po’ di tempo da quando l’ho esaminato. La soluzione al problema all’epoca sembrava essere quella di entrambe aggiungere una stringa casuale a discourse_sso_url e assicurarsi che la cache della pagina non fosse abilitata sulla pagina in cui veniva visualizzato il link di accesso (altrimenti, la stringa casuale non sarà univoca per ogni visita di un utente anonimo).