Функция the_content()
выводит содержимое текущего поста (записи, страницы или произвольного типа поста) в цикле.
Выводит полностью весь пост, если задействована на страницах:
Выводит только часть контента поста, которая находится до тега <!--more-->
на следующих типах страниц:
По поводу упомянутых файлов – не обязательно для отображения определённого типа страницы может задействоваться именно указанный файл, например для рубрик может использоваться и archive.php
, и index.php
, для лучшего понимания рекомендую посмотреть видеоурок про иерархию шаблонов.
the_content( $more_link_text = null, $strip_teaser = false )
Параметры
- $more_link_text
- (строка) В этом параметре можно указать текст ссылки «Далее». Читайте также о других способах изменения текста ссылки.
- $strip_teaser
- (логическое) Нужно ли в полной версии поста обрезать то, что находится перед тегом
<--more-->
?true
— нужно,false
— не нужно.
Функция ничего не возвращает.
Пример 1. Выводим контент, изменив при этом текст ссылки «Далее»
По сути в данной ситуации всё, что нам нужно сделать, это задать первый параметр функции.
the_content( 'Узнать подробнее →' );
В этот параметр вы даже можете передать заголовок записи/страницы функцией the_title(), вот так примерно:
the_content( 'Узнать подробнее про ' . the_title( '', '', false ) );
Пример 2. Включаем или отключаем обрезку по тегу <!—more—>
Если функция the_content()
работает не совсем так, как нам хотелось бы, например обрезает контент по тегу <!--more-->
, когда мы этого не хотим, или наоборот, не обрезает, когда хотим, то мы можем изменить это поведение функции при помощи глобальной переменной $more
.
Для этого нам нужно:
Пример:
global $more; while( have_posts() ) : the_post(); $more = 1; // отображаем полностью всё содержимое поста the_title(); // эта функция выводит заголовок the_content(); // выводим контент endwhile;
Второй пример — возможно вы уже читали пост про прилепленные записи. Так вот, используя условный тег is_sticky(), мы можем сделать так, чтобы для прилепленных записей контент отображался целиком, а для всех остальных записей выводились только анонсы.
global $more; while( have_posts() ) : the_post(); if( is_sticky() ) : // проверяем, является ли текущая запись прилепленной $more = 1; // полный пост else : $more = 0; // анонс endif; the_title(); // заголовок the_content('Подробнее →'); // контент endwhile;
the_content — изменяем содержимое поста перед выводом
Как я уже говорил, этот фильтр очень популярен и используется во многих плагинах. Его даже используют для добавления ссылок на похожие записи в конце поста.
add_filter( 'the_content', 'true_related_posts_after_content', 25 ); function true_related_posts_after_content( $content ) { $related_posts = ''; // предположим, что это какой-то код, например код для вывода похожих записей return $content . $related_posts; // добавляем сразу после содержимого поста }
Очень рекомендую обратить на этот фильтр внимание, так как благодаря ему WordPress делает с контентом страницы очень много всего перед выводом, например:
Если для вывода контента вы используете например функцию get_the_content(), то ничего из этого применяться не будет!