WordPress как на ладони
wordpress jino

the_content() WP 0.71 the content

Выводит контент текущего поста (записи).

Этот Тег шаблона должен использоваться внутри Цикла WordPress или на странице записи (page.php, single.php).

Когда функция используется на страницах архивов (не отдельная страница записи) и если в контенте используется тег-разделитель <!--more-->, the_content() обрежет текст: все что выше <!--more--> будет показано, а все что после этого тега, будет вырезано и будет вставлена ссылка "читать дальше" (текст ссылки можно изменить, указав параметр $more_link_text).

Работает на основе: get_the_content()
✈ 1 раз = 0.00995с = очень медленно | 50000 раз = 58.07с = очень медленно PHP 7.0.8, WP 4.6.1
Хуки из функции:
Возвращает

Выводит на экран отформатированный контент записи.

Использование

<?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
if (is_sticky()) {
  global $more;    // Объявим переменную $more как глобальную.
  $more = 1;       // Изменим значение переменной.
  the_content();
} else {
  global $more;
  $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);

Код из wp-includes/post-template.php WP 4.7.3

<?php
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( ']]>', ']]&gt;', $content );
	echo $content;
}

Связанные Функции

Из раздела: Записи: посты, страницы, ...

the_content 44 комментария
Полезные 1 Вопросы 3 Все
  • Егор

    а почему the_content не выводится в простом цикле get_posts не на страницах архивов и категорий?

    1
  • Саша

    Можно ли, как-нибудь на странице самого поста, показать только тизер? Например, если по дизайну его оформление отличается от текста основной статьи.

    Ответить2 месяца назад #
  • Павел

    в самом верху ошибка: или на станице запис

    Ответить9 дней назад #

Здравствуйте, !

Ваш комментарий