Ciao @angus, ho alcune notizie da EDD qui sotto:
Ho individuato il problema nel plugin WP Discourse e spero tu possa inoltrarlo agli sviluppatori.
Il problema si trova in questo file:
lib/discourse-comment.php
Nello specifico in questo filtro:
add_filter( ‘wp_kses_allowed_html’, array( $this, ‘extend_allowed_html’ ), 10, 2 );
Per impostazione predefinita, l’array che stanno filtrando contiene:
array (
‘align’ => true,
‘dir’ => true,
‘lang’ => true,
‘xml:lang’ => true,
‘aria-describedby’ => true,
‘aria-details’ => true,
‘aria-label’ => true,
‘aria-labelledby’ => true,
‘aria-hidden’ => true,
‘class’ => true,
‘id’ => true,
‘style’ => true,
‘title’ => true,
‘role’ => true,
‘data-*’ => true,
)
Particolarmente degno di nota è quest’ultimo: ‘data-*’
Il plugin WP Discourse sta filtrando questo valore per aggiungere il proprio attributo data-youtube-id, ma nel farlo, sta involontariamente rimuovendo l’attributo data-*. Ciò significa che tutti gli altri attributi data non funzionano più sotto wp_kses_post(). Questo sta causando un problema con il nostro codice PayPal.
Per essere chiari: WP Discourse non ti sta effettivamente disconnettendo da PayPal; sta solo interrompendo il codice che verifica se sei connesso. Questo perché utilizziamo un attributo data nel nostro markup e il filtro in WP Discourse lo sta rimuovendo.
La mia raccomandazione per gli sviluppatori sarebbe quella di estendere l’array $allowedposttags[‘div’] invece di sovrascriverlo.
Invece di questo:
$allowedposttags[‘div’] = array(
‘class’ => true,
‘id’ => true,
‘style’ => true,
‘title’ => true,
‘role’ => true,
‘data-youtube-id’ => array(),
);
Possono fare così:
$allowedposttags[‘div’][‘data-youtube-id’] = array();
Questo risolve il problema e dovrebbe anche garantire che la loro funzionalità rimanga invariata.