non sono sicuro che si tratti di un problema specifico di wp-discourse o del parser HTML di Discourse stesso, ma sembra che i commenti HTML su più righe non vengano nascosti nei post generati da wp-discourse.
Ho appena finito di configurare chinwag.pluralistic.net, basandomi sui post di pluralistic.net di Cory Doctorow. I suoi post includono alcuni metadati all’inizio sotto forma di commenti HTML. Recentemente, questo formato è cambiato da singola riga a più righe.
Puoi vederlo in questo post:
Il commento a riga singola dell’articolo originale viene rimosso:
Tuttavia, il commento su più righe di un post successivo viene visualizzato direttamente:
Il problema è che le righe vuote all’interno del commento vengono interpretate come paragrafi da Discourse. Quando ciò accade, il commento HTML non è più un markup valido. Se le righe vuote vengono rimosse dal commento, verrà interpretato correttamente da Discourse:
<p><!--
Tags:
Summary:
New podcast; Europe's interop coalition; Scarfolk beermats; Miami cop owns illegal mansion nightclub; Video and transcript of my OII talk; Shower temperature vs handle position
URL:
https://pluralistic.net/2020/07/06/polbathic/
Title:
Pluralistic: 06 Jul 2020 polbathic
Bullet:
🧔🏿
Separator:
_,.-'~'-.,__,.-'~'-.,__,.-'~'-.,__,.-'~'-.,__,.-'~'-.,_
Top Sources:
Today's top sources: Fipi Lele, Naked Capitalism (https://www.nakedcapitalism.com/).
-->
<br>
</p>
A parte modificare il contenuto del post prima di pubblicarlo su Discourse, non sono sicuro di quale sia il miglior approccio per gestire questo problema.
Probabilmente il modo migliore per risolvere il problema è rimuovere i commenti dal post prima di pubblicarlo su Discourse. Forse il plugin dovrebbe farlo di default, ma è la prima volta che incontro questo problema.
Il plugin WP Discourse dispone di un filtro a cui è possibile agganciarsi per analizzare il contenuto del post prima della pubblicazione su Discourse. Il filtro si chiama wp_discourse_excerpt. Il contenuto del post viene passato a questo filtro come variabile. Ecco come utilizzare tale filtro per rimuovere tutti i commenti dal post di WordPress prima che venga pubblicato su Discourse. Questo modello può essere utilizzato anche per modificare il post in altri modi:
Aggiungere questo codice al file functions.php del tema di WordPress dovrebbe risolvere il problema. Se non funziona, verifica che l’estensione libxml sia abilitata sul server del sito WordPress.
Proverò senz’altro, ma sembra un problema più grande se le entità HTML in un commento portano Discourse a considerare quel commento come HTML non valido, no?
Non sono sicuro di come Discourse dovrebbe gestire questa situazione. Penso che per i post creati direttamente su Discourse abbia senso affermare che è supportato solo un sottoinsieme limitato di HTML, ma per i post creati tramite l’API o importati da un feed RSS non è chiaro fino a che punto Discourse dovrebbe supportare l’HTML.
Credo che abbia senso aggiungere direttamente il codice che ho pubblicato sopra al plugin WP Discourse. Il plugin sta già utilizzando funzionalità simili per pulire i commenti importati da Discourse verso WordPress. Questa funzionalità è in uso da qualche tempo senza segnalazioni di problemi. Ti farò sapere al riguardo nei prossimi giorni.
Questa funzionalità è stata aggiunta nella versione 2.0.6 di WP Discourse. Quando il contenuto completo di un post viene pubblicato da WordPress su Discourse, eventuali blocchi di commenti presenti nel post vengono rimossi prima che il post venga inviato a Discourse.