WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

the_content() WP 0.71

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

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

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

Работает на основе: get_the_content()
✈ 1 раз = 0.019477с = тормоз | 50000 раз = 11.65с = медленно | PHP 7.1.11, WP 4.9.6
Хуки из функции
Возвращает

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

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

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

Список изменений

С версии 0.71 Введена.

Код the content: wp-includes/post-template.php WP 5.2.4

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

Cвязанные функции

Из метки: loop (Цикл WP)

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

Еще из тегов шаблона: Записи: посты, страницы, ...

56 комментов
Полезные 3 Вопросы 1 Все
  • Дмитрий

    Подскажите пожалуйста как изменить ссылку "подробнее" на простой адрес, без #more-263 то есть на начало страницы. Как убрать #more

    Ответить8.3 лет назад #
    • Kama7631

      Точно не знаю. Второй параметр $strip_teaser в true поставить не пробовали? Кажется это как раз то что надо:

      <?php the_content('', true); ?>
      <!--  выводим ссылку руками -->
      <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
      Ответить8.3 лет назад #
  • Ивн sochi-activerest.com

    Большое спасибо авторам этого блога. Нашел полезную информацию и решил свою задачу с усовершенствованием сайта работающего на платформе Вордпресс.

    Ответить7.10 лет назад #
  • Григорий gotovim-appetitno.ru

    Подскажите. Как в WP. Сократить текст записи? Мне надо сократить текст записи так чтобы допустим. Идет текст потом кусок текста был бы свернут, А далее следовал конец статьи.

    Ответить7.8 лет назад #
    • Kama7631

      Что значит свернут? Регулярным выражением наверное. Готового решения не знаю.

      Ответить7.8 лет назад #
  • Григорий i-net-business.ru

    В теге More Пишите свое название. И все.

    Ответить7.7 лет назад #
  • mediakirov.ru

    Спасибо. Разобрался.

    <?php 
    						$content = get_the_content(); 
    						$content = apply_filters('the_content', $content);  
    						$content = str_replace('<a href="http://yandex.ru">yandex</a>', '<a href="http://mediakirov.ru">mediakirov</a>', $content); 
    						echo $content; ?>
    						<?php //за место the_content(); ?>
    Ответить7.4 лет назад #
  • MaksEnter vekinterneta.com

    Здравствуйте.
    У меня такой вопрос: как настроить лимит выводимого контента в рубриках таким образом, чтобы не резался html ?
    Т.е.

    <?php the_content("Подробнее"); ?>

    и

    <?php the_content_limit(1000, '') ?>

    Можно совместить и то и другое?

    1
    Ответить6.9 лет назад #
  • Евгений

    Не подскажите плиз, как такой косяк заменить, на страницах, в коде:

    <div class="post-text">
    <?php the_content(); ?>

    А уже в бразере вот так:

    <div class="post-text">
    <h2>Как зарабатывать деньги в «Эволюции Ра»?</h2>
    ... дальше идет текст ....

    Не подскажете, как заменить H2 на H1? Спасибо!)

    Ответить6.6 лет назад #
  • Андрей iketch.ru

    Спасибо большое!!! Всю голову сломал как урезать статьи на выводах на главной..
    теперь знаю что с помощью Удачи блогу в развитии!

    Ответить6.4 лет назад #
  • Ксения

    Здравствуйте! Подскажите, пожалуйста, как можно что-то обработать с помощью функции the_content? В частности, мне нужно обработать что-то типа шорткода (), чтобы его можно было использовать в шаблоне, а не только вставлять в контент записи

    Ответить6 лет назад #
    • Kama7631

      do_shortcode() обрабатывает шоткоды вне контента.

      Ответить6 лет назад #
      • Ксения

        Спасибо, про do_shortcode() я в курсе, но я имею ввиду не обычные шорткоды, а кода они пишутся в виде "" (без плюсиков, конечно, в общем, как html-комментарий, в моём вопросе это обрезалось, к сожалению).

        Ответить6 лет назад #
        • Ксения

          Тьфу, опять обрезалось... В общем, клювик влево + восклицательный знак + два тире, затем текст, вызывающий шорткод, затем опять два тире и клювик вправо smile

          Ответить6 лет назад #
  • Катерина

    Про значения переменной $more - то что я искала всю ночь, нужно было реализовать фишку одну (долго объяснять), информации кроме как здесь не было нигде нужной мне, обыскала всё. Респектую, автор выручил :*

    Ответить5.9 лет назад #
Здравствуйте, !     Войти . Зарегистрироваться