Problema con l'output del testo in WordPress ('esc_html' & 'wp_richedit_pre')

19 ott 2011, 01:00:32
Visualizzazioni: 4.01K
Voti: 0

Ho un problema con l'output del testo. Quando modifico il testo nel pannello di controllo di WordPress tutto appare normale:

https://i.sstatic.net/GaIut.png

ma quando lo visualizzo nell'html:

<?php esc_html( wp_richedit_pre( $_product->details ) ); ?>

Appare così:

https://i.sstatic.net/r81xE.png

Cosa potrebbe essere sbagliato? Grazie per l'aiuto.

0
Tutte le risposte alla domanda 2
2

Supponendo che $_product->details contenga ciò che può essere definito come contenuto del post, e che contenga HTML, e tu voglia che quell'HTML venga renderizzato dal browser, allora stai sbagliando approccio.

Ti consiglio di consultare la funzione esc_html e sperimentare con essa in una sandbox - scoprirai presto che ciò che fa la funzione (proprio come dice il Codex) è di escapare l'HTML, ovvero trasforma i caratteri speciali in entità HTML, in modo che questi caratteri vengano visualizzati come simboli e non interpretati dal tuo browser.

echo esc_html('<b>una stringa</b>'); // Produce &lt;b&gt;una stringa&lt;/b&gt;
echo '<b>una stringa</b>'; // Produce <b>una stringa</b>

Quindi la risposta breve al tuo problema sembra essere - rimuovi la funzione esc_html dall'output.

19 ott 2011 06:32:53
Commenti

Ho provato in questo modo (rimuovi l''esc_html'), ma non è cambiato nulla.

Siri Siri
19 ott 2011 19:30:34

Puoi incollare un var_dump($_product->details); del tuo $_product->details qui in modo che possiamo vedere quali dati sono contenuti lì in primo luogo?

soulseekah soulseekah
20 ott 2011 09:15:03
0

hmm ... strano. Ho guardato il file 'wp-includes/formatting.php' alla funzione wp_richedit_pre:

function wp_richedit_pre($text) {
      // Filtrare un testo vuoto restituisce un fastidioso <br />\n
      if ( empty($text) ) return apply_filters('richedit_pre', '');

      $output = convert_chars($text);
      $output = wpautop($output);
      $output = htmlspecialchars($output, ENT_NOQUOTES);

      return apply_filters('richedit_pre', $output);
}

Invece di 'wp_richedit_pre()' ho usato 'wpautop()' e funziona.

https://i.sstatic.net/Jiuiy.png

Grazie per il suggerimento Soulseekah.

20 ott 2011 14:44:15