get_the_content() — возвращает контент поста

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

Используйте внутри цикла WordPress для получения содержимого текущей записи, либо передайте ID определённого поста в качестве параметра.

get_the_content( $more_link_text = null, $strip_teaser = false, $post = null )

Параметры

$more_link_text
(строка) Позволяет установить собственный текст ссылки перехода к полной версии поста. По умолчанию анкор ссылки в русской версии WordPress — (далее...).
$strip_teaser
(логическое) Влияет на то, как отображается полная версия контента (то есть то, что обычно находится в single.php):

  • false — по умолчанию полная версия содержимого поста выводится как обычно.
  • true — в этом случае в полной версии поста будет отсутствовать часть контента, которая находится до тега <!--more-->.
$post
(целое|WP_Post) ID или объект поста, контент которого мы хотим получить. По умолчанию – текущий пост в цикле. Параметр появился в WP 5.2.

Пример 1. Выводим контент страницы без фильтров

$content_no_filter = get_the_content( 'Перейти к посту...' );
echo $content_no_filter;

Главное отличие функции get_the_content() от the_content() не в том, что первая функция возвращает результат, а вторая выводит, а в том, что the_content() применяет огромное количество действий на фильтр the_content – там и интерпретация шорткодов, и замена кавычек и многое другое.

Пример 2. Как записать в переменную отфильтрованый контент

Для того, чтобы получить контент записи или страницы с применением всех фильтров, то вы можете использовать следующий код:

$content_no_filter = get_the_content(); // содержимое поста (текущего в цикле) из базы
$content = apply_filters( 'the_content', $content_no_filter ); // применяем фильтр the_content

Либо буферизацию на функцию the_content():

ob_start();
the_content();
$content = ob_get_contents(); // переменная $content теперь содержит контент записи
ob_end_clean();

Пример 3. Вывод содержимого записи/страницы с определённым ID

До версии WordPress 5.2 нам нужно было придумывать что-то в этом роде:

$post_id = 5; // пост с определённым ID
$post = get_post( $post_id );
$content = apply_filters('the_content', $post->post_content);

Теперь же всё изменилось с приходом третьего параметра в функцию:

$post_id = 5;
$content = get_the_content( null, false, $post_id );

Глобальные переменные

Функция кстати работает со следующими глобальными переменными:

$page
(целое) Номер подстраницы при разделении поста по подстраницам тегом <!--nextpage-->
$more
(логическое) Нужно ли отображать целиком пост или только отрывок до тега <!--more-->. Подробное описание этой глобальной переменной в примере.
$pages
(массив) Массив контента каждой из подстраниц контента поста, разделённых тегом <!--nextpage-->.
$multipage
(логическое) Существует ли разделение контента на подстраницы.

Как же так, ведь текст кнопки «Далее» можно указать в первом параметре функции the_content()? Дело в том, что там вы можете указать только текст ссылки, а фильтр the_content_more_link позволяет полностью изменить её HTML код.

В качестве примера добавим к ссылке «Далее» HTML-атрибут target="_blank".

add_filter( 'the_content_more_link', 'true_target_blank_to_read_more', 25, 2 );
 
function true_target_blank_to_read_more( $more_link, $more_link_text ) {
	// Параметры, передаваемые из фильтра, сейчас мы их не будем использовать
	// $more_link_text - текст ссылки по умолчанию
	// $more_link - HTML ссылки по умолчанию
	return ' <a href="' . get_permalink() . '#more-' . get_the_id() . '" target="_blank">Подробнее →</a>';
}

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Если вам нужна помощь с сайтом или разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда будем рады вам помочь!

Комментарии — 2

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

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, если же код – меньше одной строчки, то можно и в <code></code>.