Как получить "публикуемый контент" без удаления тегов?
Я пытаюсь получить содержимое сообщения определенного сообщения:
$post = get_post(/* id */);
$content = $post->post_content;
Однако это извлекает содержимое без разрывов строк и пропускает все теги <p>
.
Как правильно получить содержимое публикации, не удаляя теги <p>
(как показано на странице публикации или вкладке редактора записей "Текст ")?
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-й варианты.
Найдено решение:
$content = apply_filters('the_content', $post->post_content);
Второй способ получить содержимое публикации с тегом p - это
echo wpautop( $post->post_content );