Problemă cu afișarea textului în WordPress ('esc_html' & 'wp_richedit_pre')

19 oct. 2011, 01:00:32
Vizualizări: 4.01K
Voturi: 0

Am o problemă cu afișarea textului. Când editez textul în panoul de control WordPress totul arată normal:

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

dar când îl afișez în html:

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

Arată astfel:

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

Ce ar putea fi în neregulă? Vă rog ajutor.

0
Toate răspunsurile la întrebare 2
2

Presupunând că $_product->details conține ceea ce poate fi numit conținutul postării și conține HTML, iar tu vrei ca acel HTML să fie interpretat de browser, atunci o faci greșit.

Te rog să consulți funcția esc_html și să experimentezi cu ea într-un mediu de test - vei descoperi în curând că ceea ce face funcția (așa cum spune și Codex-ul) este să escapeze HTML-ul, adică să transforme orice simbol special în entități HTML, astfel încât aceste simboluri să fie afișate ca simboluri și nu să fie interpretate de browserul tău.

echo esc_html('<b>un șir de caractere</b>'); // Produce &lt;b&gt;un șir de caractere&lt;/b&gt;
echo '<b>un șir de caractere</b>'; // Produce <b>un șir de caractere</b>

Deci răspunsul scurt la problema ta pare a fi - elimină funcția esc_html din jurul output-ului.

19 oct. 2011 06:32:53
Comentarii

Am încercat în acest fel (eliminând 'esc_html'), dar nimic nu s-a schimbat.

Siri Siri
19 oct. 2011 19:30:34

Poți să lipesti aici un var_dump($_product->details); din $_product->details ca să vedem ce date conține inițial?

soulseekah soulseekah
20 oct. 2011 09:15:03
0

hmm ... ciudat. M-am uitat în fișierul 'wp-includes/formatting.php' la funcția wp_richedit_pre:

function wp_richedit_pre($text) {
      // Filtrarea unui text gol rezultă într-un enervant <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);
}

În loc de 'wp_richedit_pre()' am folosit 'wpautop()' și funcționează.

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

Mulțumesc pentru indiciu Soulseekah.

20 oct. 2011 14:44:15