Проблема с выводом текста в WordPress ('esc_html' и 'wp_richedit_pre')
У меня проблема с выводом текста. Когда я редактирую текст в панели управления WordPress, всё выглядит нормально:
https://i.sstatic.net/GaIut.png
Но когда я вывожу его в HTML:
<?php esc_html( wp_richedit_pre( $_product->details ) ); ?>
Текст отображается вот так:
https://i.sstatic.net/r81xE.png
В чём может быть проблема? Прошу помощи.

Предположим, что $_product->details
содержит то, что можно назвать контентом записи, и содержит HTML, и вы хотите, чтобы этот HTML был обработан браузером — тогда вы делаете это неправильно.
Пожалуйста, ознакомьтесь с функцией esc_html
и поэкспериментируйте с ней в песочнице — вы быстро поймете, что делает эта функция (как и указано в Кодексе): она экранирует HTML, то есть преобразует специальные символы в HTML-сущности, чтобы эти символы отображались как текст и не интерпретировались браузером.
echo esc_html('<b>a string</b>'); // Выводит <b>a string</b>
echo '<b>a string</b>'; // Выводит <b>a string</b>
Таким образом, краткий ответ на вашу проблему — удалите функцию esc_html
из вывода.

Хм... странно. Я посмотрел файл 'wp-includes/formatting.php' на функцию wp_richedit_pre:
function wp_richedit_pre($text) {
// Фильтрация пустого результата приводит к раздражающему <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);
}
Вместо 'wp_richedit_pre()' я использовал 'wpautop()', и это сработало.
https://i.sstatic.net/Jiuiy.png
Спасибо за подсказку, Soulseekah.
