Как получить "публикуемый контент" без удаления тегов?


Я пытаюсь получить содержимое сообщения определенного сообщения:

$post = get_post(/* id */);
$content = $post->post_content;

Однако это извлекает содержимое без разрывов строк и пропускает все теги <p>.

Как правильно получить содержимое публикации, не удаляя теги <p> (как показано на странице публикации или вкладке редактора записей "Текст ")?

Author: blizzrdof77, 2014-10-16

3 answers

Оба ответа до сих пор верны, но более подробный ответ кажется оправданным.

Если вы используете это:

$content = wpautop( $post->post_content );

Вы применяете единственную функцию, которая добавляет теги абзацев к содержимому публикации. wpautop() является одной из многих функций (иногда включая функции плагинов), которые подключаются к the_content, поэтому, если вы сделаете это:

$content = apply_filters('the_content', $post->post_content);

Вы пропускаете содержимое публикации через любые фильтры в the_content, которые по умолчанию включают wpautop().

Наконец, если вы в курсе, вы можете просто сделать это:

$content = apply_filters( 'the_content', get_the_content() );

который по сути является оболочкой для второго фрагмента кода, но, конечно, он выглядит немного приятнее. Обновление 1 сентября 2018 года: Пересмотрено на основе комментария . Реквизит @timmb.

В целом, я бы сказал, что предпочтительный "правильный способ" сделать это - от последнего до первого, поскольку использование основной функции WP должно обеспечить большую обратную совместимость (по крайней мере, теоретически). Единственное другое решение, которое нужно принять, - это разрешить WordPress и плагинам также измените содержимое публикации. Если это так, определенно используйте 2-й или 3-й варианты.

 35
Author: mrwweb, 2017-09-01 17:13:46

Найдено решение:

$content = apply_filters('the_content', $post->post_content);
 9
Author: Lisandro Vaccaro, 2014-10-16 12:21:09

Второй способ получить содержимое публикации с тегом p - это

echo wpautop( $post->post_content );
 6
Author: DINESH BHIMANI, 2014-10-16 14:04:49