the_content

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

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

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

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

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

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

<?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.2

<?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;
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *