Problema con la salida de texto en WordPress ('esc_html' y 'wp_richedit_pre')

19 oct 2011, 01:00:32
Vistas: 4.01K
Votos: 0

Tengo un problema con la salida de texto. Cuando edito el texto en el panel de control de WordPress todo se ve normal:

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

pero cuando lo muestro en html:

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

Se ve así:

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

¿Qué podría estar mal? Por favor ayuda.

0
Todas las respuestas a la pregunta 2
2

Asumiendo que $_product->details contiene lo que puede denominarse como contenido de la publicación, y contiene HTML, y deseas que ese HTML sea interpretado por el navegador, entonces lo estás haciendo mal.

Por favor, consulta la función esc_html y experimenta con ella en un entorno de pruebas - pronto descubrirás que lo que hace la función (tal como dice el Codex) es escapar el HTML, es decir, transforma los símbolos especiales en entidades HTML, por lo que estos símbolos se muestran como símbolos y no son interpretados por tu navegador.

echo esc_html('<b>un texto</b>'); // Produce &lt;b&gt;un texto&lt;/b&gt;
echo '<b>un texto</b>'; // Produce <b>un texto</b>

Así que la respuesta breve a tu problema parece ser: elimina la función esc_html que envuelve la salida.

19 oct 2011 06:32:53
Comentarios

Intenté de esta manera (eliminando el 'esc_html'), pero nada ha cambiado.

Siri Siri
19 oct 2011 19:30:34

¿Puedes pegar aquí un var_dump($_product->details); de tu $_product->details para que podamos ver qué datos contiene en primer lugar?

soulseekah soulseekah
20 oct 2011 09:15:03
0

hmm ... extraño. Miré el archivo 'wp-includes/formatting.php' en la función wp_richedit_pre:

function wp_richedit_pre($text) {
      // Filtrar un texto vacío resulta en un molesto <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);
}

En lugar de 'wp_richedit_pre()' usé 'wpautop()' y funciona.

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

Gracias por la pista Soulseekah.

20 oct 2011 14:44:15