the_content()
Выводит контент текущего поста (записи).
Тег шаблона, должен использоваться внутри Цикла WordPress или на странице записи (page.php, single.php), в начале которой вызвана функция the_post().
Когда функция используется на страницах архивов (не отдельная страница записи) и если в контенте используется тег-разделитель <!—more—>, the_content() обрежет текст: все что выше <!—more—> будет показано, а все что после этого тега, будет вырезано и будет вставлена ссылка «читать дальше» (текст ссылки можно изменить, указав параметр $more_link_text).
Возвращает
Выводит на экран отформатированный контент записи.
Использование
<?php the_content( $more_link_text, $strip_teaser ); ?>
- $more_link_text(строка)
- Текст, который будет показан как текст ссылки, вместо ‘(читать дальше…)’.
По умолчанию: ‘(читать дальше…)’
- $strip_teaser(логический)
- Под словом «teaser» понимается привлекающий текст до тега
<!--more-->
. strip_teaser — значит удалить этот текст. Если установить параметр в true, то контент до тега<!--more-->
на странице is_single() будет удален. - Аналогично можно удалить контент до тега more, указав в любом месте кода статьи тег <!—noteaser—>. Обычно его принято указывать сразу после тега
<!--more-->
.
По умолчанию: false
Примеры
#1 Изменение текста ссылки «читать дальше…»
Если нужно изменить стандартный текст ссылки, который выводится функций, когда контент обрезается по тегу <!—more—>, то укажите необходимый текст в первом параметре функции:
<?php the_content('Перейти к полной статье...'); ?>
#2 Вставка заголовка статьи в текст ссылки «читать дальше…»
Можно использовать Тег шаблона the_title(), чтобы вставить в текст ссылки «читать дальше…» заголовок записи:
<?php the_content( "читать полностью: " . the_title('', '', false) ); ?>
#3 Изменение поведения функции, относительно обрезки текста по тегу <!--more-->
Если функция не режет текст по тегу <!—more—> или наоборот, режет, где нам это не нужно, то можно изменить переменную $more, тем самым указав функции резать (0) или не резать (1) текст.
<?php
global $more; // Объявим переменную $more как глобальную (перед Циклом WordPress).
$more = 0; // Изменим значение переменной, чтобы показать только текст до тега more.
the_content("More...");
?>
если нужно оставить контент как есть:
<?php
global $more;
$more = 1; // игнорируем тег more (не обрезаем).
the_content();
?>
#4 Игнорируем тег «more» для прилепленных записей (sticky)
Этот пример будет выводить весь контент для прилепленных записей (даже если в них есть тег «more»), но остальных записей текст будет обрезаться:
<?php
global $more; // Объявим переменную $more как глобальную.
if( is_sticky() ){
$more = 1;
the_content();
}
else {
$more = 0;
the_content( 'Read the rest of this entry »' );
}
?>
#5 Альтернативное использование
Если нужно получить контент записи для обработки, а не выводить его на экран, то можно использовать функцию get_the_content():
$content = get_the_content();
Однако надо иметь ввиду, что полученный контент (который сейчас в переменной $content) не будет отфильтрован. Чтобы его отфильтровать его нужно «прогнать» через фильтр ‘the_content’:
$content = apply_filters( 'the_content', $content );
$content = str_replace( ']]>', ']]>', $content );
Код the content: wp-includes/post-template.php
WP 5.3
function the_content( $more_link_text = null, $strip_teaser = false ) {
$content = get_the_content( $more_link_text, $strip_teaser );
/**
* Filters the post content.
*
* @since 0.71
*
* @param string $content Content of the current post.
*/
$content = apply_filters( 'the_content', $content );
$content = str_replace( ']]>', ']]>', $content );
echo $content;
}