Функция возвращает содержимое текущего поста. Работает только в цикле.
the_content( $more_link_text = null, $strip_teaser = false) |
- $more_link_text
- (строка) В этом параметре можно указать текст ссылки «Далее». Читайте также о других способах изменения текста ссылки.
- $strip_teaser
- (логическое) Нужно ли в полной версии пост обрезать то, что находится перел тегом
<--more-->
?true
— нужно,false
— не нужно.
Выводит полностью весь пост, если задействована на страницах:
- записей
single.php
, - страниц
page.php
, - произвольных типов постов
single-{тип_поста}
.
Выводит только часть контента поста, которая находится до тега <!--more-->
на следующих типах страниц:
- рубрики
category.php
, - метки
tag.php
, - архивы
archive.php
, - таксономии
taxonomy.php
.
Что делать, если у вас выводится полный текст поста, а вы хотите выводить анонсы со ссылкой «Далее»?
Всё, что нам потребуется сделать, это:
- Непосредственно перед циклом определить глобальную переменную
$more
.global $more;
- Затем, уже непосредственно перед функцией
the_content()
присвоить ей значение 0 (отображать анонсы) или 1 (отображать целиком весь пост):$more = 0; // 0 - отобразить часть контента то тега more, 1 - отобразить весь контент
Пример:
global $more; while( have_posts() ) : the_post(); $more = 1; // отображаем полностью всё содержимое поста the_title(); // эта функция выводит заголовок the_content(); // выводим контент endwhile; |
Читайте также описание функции the_title().
Второй пример — возможно вы уже читали пост про прилепленные записи. Так вот, используя условный тег is_sticky(), мы можем сделать так, чтобы для прилепленных записей контент отображался целиком, а для всех остальных записей выводились только анонсы.
global $more; while( have_posts() ) : the_post(); if( is_sticky() ) : // проверяем, является ли текущая запись прилепленной $more = 1; // полный пост else : $more = 0; // анонс endif; the_title(); // заголовок the_content('Подробнее →'); // контент endwhile; |
Как вывести содержимое конкретного поста, зная его ID?
В отличие от функций get_the_title() и get_permalink() функции для вывода контента поста не имеют параметра с ID поста, так что нам не удастся получить или вывести контент какого-либо определенного поста вне цикла этим способом.
Другой способ — функция get_post().
$my_post_obj = get_post( $my_post_id ); // параметр функции - ID поста, содержимое которого нужно вывести echo $my_post_obj->post_content; |
В этом примере (который выше) у нас выведется неотфильтрованный контент — в том самом виде, в котором он находится в базе данных. Так как очень многие плагины в WordPress применяют свои фильтры к контенту постов, то такой способ хорош, если вы хотите обойти этот фильтр.
Если фильтр the_content
в данном случае вам нужен, тогда наш пример изменится следующим образом:
$my_post_obj = get_post( $my_post_id ); $the_content_filtered = apply_filters( 'the_content', $my_post_obj->post_content ); echo str_replace( ']]>', ']]>', $the_content_filtered ); |
Фильтры
the_content_more_link — позволяет изменить кнопку «Далее»
Как же так, ведь текст кнопки «Далее» можно указать в первом параметре функции the_content()
? Дело в том, что там вы можете указать только текст ссылки, а фильтр the_content_more_link
позволяет полностью изменить её HTML код.
В качестве примера добавим к ссылке «Далее» HTML-атрибут target="_blank"
.
function true_target_blank_to_read_more( $more_link, $more_link_text ) { // Параметры, передаваемые из фильтра, сейчас мы их не будем использовать // $more_link_text - анкор (текст) ссылки по умолчанию // $more_link - HTML ссылки по умолчанию global $post; return ' <a . get_permalink() . '#more-' . get_the_id() . '" target="_blank">Подробнее →</a>'; } add_filter( 'the_content_more_link', 'true_target_blank_to_read_more', 10, 2 ); |
the_content — изменяем содержимое поста перед выводом
Как я уже говорил, этот фильтр очень популярен и используется во многих плагинах. Его даже используют для добавления ссылок на похожие записи в конце поста.
function true_related_posts_after_content( $content ) { $related_posts = ''; // предположим, что это какой-то код, например код для вывода похожих записей return $content . $related_posts; // добавляем сразу после содержимого поста } add_filter( 'the_content', 'true_related_posts_after_content', 10, 1 ); |
Источник: misha.blog