Возвращает неотфильтрованный контент поста (под постом подразумевается запись, страница, либо любой другой произвольный тип поста).
Используйте внутри цикла WordPress для получения содержимого текущей записи, либо передайте ID определённого поста в качестве параметра.
get_the_content( $more_link_text = null, $strip_teaser = false, $post = null )
(далее...)
.single.php
):
false
— по умолчанию полная версия содержимого поста выводится как обычно.true
— в этом случае в полной версии поста будет отсутствовать часть контента, которая находится до тега <!--more-->
.$content_no_filter = get_the_content( 'Перейти к посту...' ); echo $content_no_filter;
Главное отличие функции get_the_content()
от the_content() не в том, что первая функция возвращает результат, а вторая выводит, а в том, что the_content() применяет огромное количество действий на фильтр the_content – там и интерпретация шорткодов, и замена кавычек и многое другое.
Для того, чтобы получить контент записи или страницы с применением всех фильтров, то вы можете использовать следующий код:
$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();
До версии 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 );
Функция кстати работает со следующими глобальными переменными:
<!--nextpage-->
<!--more-->
. Подробное описание этой глобальной переменной в примере.<!--nextpage-->
.Как же так, ведь текст кнопки «Далее» можно указать в первом параметре функции 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>'; }
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.
Добрый день, Михаил могли бы вы объяснить суть отличия get_the_content() от the_content(). Что значит неотфильтрованный контент, как это выглядит на практике?
Добрый день,
да даже в плане того, что применяются шорткоды. А вообще можете провести поиск по файлам WordPress на фильтр
the_content
и увидите полную картину.