Come sostituisce esattamente Discourse i commenti di WP?

Stiamo utilizzando Discourse invece dei commenti di WP (l’opzione “Rimuovi modello commenti WordPress” è selezionata, insieme ad Ajax). Ho Toolset Access Control attivo su un tipo di contenuto personalizzato che pubblica su Discourse (in una categoria privata allineata al controllo degli accessi). Normalmente questo tipo di controllo influenzerebbe anche la visibilità dei commenti del post, ma non sta influenzando la visualizzazione dei commenti di Discourse. Avete qualche idea?

Forse posso aggiungere ulteriori informazioni qui:

Abbiamo un tipo di post personalizzato privato sul nostro sito WordPress, i cui post devono essere collegati a discussioni in una categoria privata di Discourse. Gli stessi utenti che hanno accesso alla categoria di Discourse hanno anche accesso al post su WordPress. Gestiamo questa situazione assegnando questi utenti al ruolo di Editor in WordPress, mentre in Discourse appartengono a un gruppo che garantisce loro l’accesso alla categoria privata.

In nessun caso gli utenti non autenticati dovrebbero vedere né i post su WordPress né i thread di discussione su Discourse. Questo funziona come previsto grazie ai controlli di accesso basati su ruoli e gruppi, rispettivamente. Sul lato WordPress, come già menzionato, stiamo utilizzando Toolset Access per limitare l’accesso a tutti i post di questo tipo di post personalizzato.

Tuttavia, i thread di discussione privati di Discourse vengono visualizzati al pubblico tramite l’incorporamento in WordPress, anche se il contenuto del post stesso è nascosto. In altre parole, i commenti incorporati di Discourse non vengono nascosti dai controlli di accesso. Stiamo cercando di capire cosa potrebbe generare questo output al di fuori del ciclo di controllo e come risolvere il problema.

Il plugin WP Discourse visualizza i commenti caricando un template personalizzato per i commenti. Utilizza il filtro comments_template di WordPress per caricare il template personalizzato. Non sono sicuro del motivo per cui i commenti vengano ancora caricati quando hai configurato Toolset Access Control per un tipo di contenuto. Valuterò cosa sta succedendo.

Penso che il plugin dovrebbe aggiungere un’opzione per non caricare i commenti per i post pubblicati in una categoria privata di Discourse. Se abilitata, verrebbe visualizzato solo un link all’argomento di Discourse. Non sono sicuro che questo risolverebbe il problema che stai affrontando, però.

Ciao Simon, sto lavorando a questo con @Kayla. Ciò che descrivi qui risolverebbe il nostro problema.

Sarebbe comunque utile sapere anche come includere il template dei commenti di Discourse all’interno del nostro controllo degli accessi più granulare. Grazie!

Ottimo! Non credo ci saranno problemi a includerlo nel prossimo aggiornamento del plugin. Cercherò di completarlo entro la fine della settimana. Ti terrò aggiornato sui progressi.

Penso che il problema che stai riscontrando sia legato alla priorità con cui WP Discourse si aggancia al filtro comments_template di WordPress. Il plugin WP Discourse utilizza una priorità di 20 per chiamare la funzione che si aggancia a questo filtro. Il plugin Toolset probabilmente si aggancia a quel filtro con una priorità inferiore per impedire il caricamento del template dei commenti per le pagine protette.

Ho contattato Toolset a riguardo e mi sono sbagliato sul comportamento atteso. Il plugin Toolset Access non si aggancia affatto al template dei commenti. Nascondere i commenti sui contenuti limitati richiede codice personalizzato che si agganci al loro filtro toolset_access_api_get_post_permissions per sopprimere o consentire il rendering del template dei commenti a livello di tema. Mi scuso per non aver realizzato che la loro restrizione dei contenuti riguardava letteralmente il template del contenuto stesso. :woman_facepalming:

Questa opzione è stata aggiunta al plugin nella versione 2.0.7. È ora disponibile nel repository WordPress.

Quando selezioni l’opzione “Abilita commenti Discourse” del plugin, ora vedrai tre opzioni per i tipi di commenti:

Seleziona l’opzione “Visualizza commenti per argomenti pubblici” per mostrare i commenti solo per gli argomenti presenti in categorie Discourse pubbliche. Se un argomento è pubblicato in una categoria privata, verrà visualizzato un link all’argomento e al suo numero di commenti.

Se un argomento pubblicato da WordPress a Discourse viene spostato da una categoria pubblica a una privata su Discourse, i commenti verranno rimossi da WordPress e sostituiti da un link. Questo cambiamento richiederà fino a 10 minuti per essere applicato perché il plugin WP Discourse memorizza nella cache i dati dei commenti restituiti da Discourse. Puoi invalidare immediatamente la cache delle categorie selezionando l’opzione “Forza aggiornamento categorie” dalla pagina delle impostazioni di pubblicazione del plugin e salvando tale pagina delle impostazioni.

Per consentire al plugin di accedere alle autorizzazioni delle categorie per le sottocategorie di Discourse, devi selezionare l’opzione “Visualizza sottocategorie” dalla scheda Impostazioni di pubblicazione del plugin. Se tale opzione non è abilitata e l’opzione “Visualizza commenti per argomenti pubblici” è attiva, tutte le sottocategorie su Discourse saranno considerate private e verrà visualizzato un link invece dei commenti.

Nota: la capacità del plugin di riconoscere le modifiche alle categorie effettuate direttamente su Discourse è disponibile solo se il tuo sito utilizza una versione recente di Discourse.

Per controllare programmaticamente quali utenti hanno i commenti di Discourse visualizzati per loro, puoi bypassare completamente il caricamento dei commenti WP Discourse per un utente utilizzando il filtro wpdc_load_comments_template_for_user. A tale filtro vengono passati tre argomenti: $load_template (impostato di default su true), $current_user e $post_id. Restituisci false da una funzione che si aggancia al filtro per impedire il caricamento dei commenti per un determinato utente.

Le modifiche che sto notando con questo aggiornamento sono che, mentre discourse_replies_html viene caricato e appare come previsto, sembra non riuscire a caricare discourse_no_replies_html (vedo il link testuale “Join Discussion Link: no Comments”, ma non il nostro template). Inoltre, se il post non è stato pubblicato su Discourse, appare un nuovo messaggio: “Comments are not currently available for this post.” Tutti questi sono post pubblici in categorie pubbliche di Discourse.

Per i post pubblicati in una categoria privata di Discourse, sembra che venga caricato il modulo predefinito dei commenti di WP. Nessun link al topic di Discourse.

L’opzione “Display comments for public topics” è impostata, così come “Display Subcategories”. Ho aggiornato “Clear Cached Comment HTML” e forzato l’aggiornamento della categoria. Sto trascurando qualcosa?

Grazie per aver segnalato il problema! Il problema dovrebbe essere risolto nella versione 2.0.8 di WP Discourse.

Più tardi oggi o domani apporterò alcune modifiche al plugin che dovrebbero risolvere anche gli altri problemi che hai segnalato. Il mancato caricamento del template dei commenti di WordPress per i post non pubblicati su Discourse doveva essere risolto immediatamente.

Ecco cosa vedo quando seleziono l’opzione “Mostra commenti per i topic pubblici” e l’opzione “Mostra commenti WP esistenti”, quindi pubblico un post con commenti WordPress esistenti:

Dal punto di vista dell’utente, la situazione non sembra molto chiara (il che potrebbe essere risolto con alcune personalizzazioni di WordPress), ma il link ai commenti di Discourse esiste.

Se hai abilitato l’impostazione del sito “Cache Comment HTML”, prova a disattivarla. Questa impostazione non dovrebbe causare problemi, ma deselezionarla semplificherà il debug.

Inviami tutti gli altri dettagli che hai a disposizione riguardo al problema. Più tardi oggi lancerò un piccolo aggiornamento nel repository di WordPress per risolvere un problema con il pulsante “Unlink Topic” che si verifica con il rilascio di WordPress 5.5.

Siamo alla versione 2.1.1 con WP 5.5. Non abbiamo attivato la cache dei commenti e non stiamo utilizzando i commenti di WP (ma ora non vediamo più caricato il modulo predefinito, quindi questo è positivo).

Tuttavia, a volte i template personalizzati vengono caricati e altre volte no. Abbiamo ripristinato la visualizzazione dei commenti per tutti i post, indipendentemente dal fatto che il topic di Discourse sia privato o meno, ma questo non ha risolto il problema. Non riesco a capire il motivo, ma sembra che il comportamento sia persistente per i singoli post. Ecco degli esempi per post pubblici in topic pubblici:

Nessun commento, non viene caricato discourse_no_replies_html:

Nessun commento, viene caricato discourse_no_replies_html:

Ci sono commenti, non viene caricato discourse_replies_html:

Ci sono commenti, viene caricato discourse_replies_html:

È possibile che il problema sia legato ai modelli personalizzati, ma esiste un’altra segnalazione di un problema in cui il modello del commento non viene caricato e viene visualizzato invece il link al commento. Non riesco a riprodurre il problema sul mio sito di sviluppo, ma procederò con una piccola modifica al plugin che dovrebbe risolvere il problema. Lo avrò pronto entro domani mattina. Grazie per la vostra pazienza!

Puoi provare ad aggiornare il plugin alla versione 2.1.2 e farmi sapere se risolve il problema?

Posso confermare che l’aggiornamento alla versione 2.1.2 ha risolto il problema di caricamento del modello per noi. Grazie!