wp_editor aggiunge entità HTML al contenuto

30 apr 2012, 20:44:58
Visualizzazioni: 13.6K
Voti: 6

Sto costruendo la pagina delle opzioni del mio tema e voglio usare l'editor TinyMCE di WordPress, quindi sto chiamando wp_editor. Ma quando salvo i dati, alcune entità vengono aggiunte al contenuto. Ad esempio, se voglio aggiungere un'immagine:

<img class="" title="" src="path_to_image" alt="" />

Ecco cosa ottengo dopo aver cliccato su salva:

<img title="\&quot;\&quot;" src="\&quot;path_to_image\&quot;" alt="\&quot;\&quot;" />

Perché sta trasformando le virgolette in entità (e lascia le virgolette reali - visualizzate correttamente?)??

@modifica: Ecco come visualizzo il mio editor:

    $class = (isset($value['class'])) ? $value['class']:'';
    $content = (get_option($value['id']) ? get_option($value['id']) : '';

    $settings = array(
        'textarea_name' => $value['id'], 
        'editor_class' => $class
        );
    wp_editor($content, strtolower($value['id']), $settings );

Ed ecco come salvo i dati per questo campo:

update_option($value['id'],
$_POST[ $value['id'] ]);
0
Tutte le risposte alla domanda 3
0
13

WordPress applica addslashes agli input POST. Il valore che ottieni dal database probabilmente appare così:

<img title=\"\" …

… e l'editor tenta di imporre un markup valido da quello.

Quindi… chiama l'editor con…

wp_editor( stripslashes( $content ), strtolower($value['id']), $settings );
30 apr 2012 22:00:47
2

Anch'io ho avuto lo stesso problema. Poi ho usato:

<? wp_editor(html_entity_decode(stripcslashes(get_option('wid1_cont'))), "editor1",$settings = array('textarea_name'=>'wid1_cont','textarea_rows'=>'5') ); ?>

Ha funzionato...

14 dic 2012 22:03:50
Commenti

Per favore, spiega la tua soluzione. Perché è migliore degli altri approcci?

fuxia fuxia
14 dic 2012 22:54:39

@Pavan So che dicono di non commentare per ringraziare, ma - GRAZIE!

jerrygarciuh jerrygarciuh
4 nov 2016 00:52:33
0

a volte, il problema non è nel salvataggio: è solo nella fase di visualizzazione.

Prova:

wp_editor( html_entity_decode($content), strtolower($value['id']), $settings );
12 set 2012 18:26:42