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

the_excerpt() WP 0.71

Выводит "отрывок" (цитату) поста или первые 55 слов контента, со вставкой в конец [...].

Используется внутри Цикла WordPress.

Если "Отрывок" не указан (указывается при создании поста), то функция "создаст" его самостоятельно из первых 55 слов контента. HTML теги, шорткоды и графика при этом будут вырезаны (они не будут учитываться при подсчете слов).

Если "Отрывок" указан, то он будет выведен как есть. Конструкция [...] не добавляется в конец в этом случае.

Если текущая запись является вложением (выводится на странице: attachment.php или image.php), то эта функция выведет текст указанный в поле "описание" (caption) и текст не будет иметь на конце конструкции [...].

Итоговый текст (результат работы функции) пропускается через фильтр the_excerpt, который среди прочего обрабатывает текст функцией wpautop() - оборачивает цитату в тег <p>.

the_excerpt() и the_content()

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

Работает на основе: get_the_excerpt()
✈ 1 раз = 0.007916с = очень медленно | 50000 раз = 5.61с = быстро | PHP 7.1.2, WP 4.7.3
Хуки из функции
Возвращает

Ничего. Выводит на экран короткий текст.

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

<?php the_excerpt(); ?>

Примеры

#1. Базовое использование

Выведем "Цитату" поста на страницах архивов (категории, метки, авторы, даты):

<?php the_excerpt(); ?>

#2. Использование вместе с условными тегами

Проверим является ли данная страница разделом категории, если да, то заменим the_content() на the_excerpt():

if ( is_category() ) {
	the_excerpt();
}
else {
	the_content();
}

#3. Изменение длины обрезаемого текста

По умолчанию, длина по которому режется текст - это 55 слов, чтобы изменить этот параметр, можно использовать фильтр excerpt_length, для этого поместите такой код в файл темы functions.php:

add_filter( 'excerpt_length', function(){
	return 20;
} );

#4. Удаление конструкции [...] на конце

По умолчанию, если текст обрезается, то в конце добавляется [...], изменить [...] можно через фильтр excerpt_more. Добавим такой код в файл темы functions.php:

add_filter('excerpt_more', function($more) {
	return '...';
});

#5. Создаем ссылку "Читать дальше..." на конце

Опять используем фильтр excerpt_more (для 2.9+). Скопируйте такой код в файл темы functions.php:

add_filter( 'excerpt_more', 'new_excerpt_more' );
function new_excerpt_more( $more ){
	global $post;
	return '<a href="'. get_permalink($post) . '">Читать дальше...</a>';
}

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

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

Код the excerpt: wp-includes/post-template.php WP 5.4.2

<?php
function the_excerpt() {

	/**
	 * Filters the displayed post excerpt.
	 *
	 * @since 0.71
	 *
	 * @see get_the_excerpt()
	 *
	 * @param string $post_excerpt The post excerpt.
	 */
	echo apply_filters( 'the_excerpt', get_the_excerpt() );
}

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

Из метки: excerpt (цитата отрывок фрагмент)

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

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

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

39 комментов
Полезные 2 Вопросы 2 Все
  • @ Positive_User

    Всем здравие! Может кто подскажет в чем может быть такая проблема: Вывожу пост из рубрики новостей с помощью the_excerpt, однако анонс не выводится если поле "Цитата" пустое (в противном случае выводится). В чем может быть проблема? Ведь по умолчанию должен выводится текст состоящий из 55 слов( sad

    Ответить2 мес назад #
    • campusboy3554 www.youtube.com/c/wpplus

      Привет. Да, должен, за это отвечает фильтр на основе wp_trim_excerpt():

      add_filter( 'get_the_excerpt', 'wp_trim_excerpt', 10, 2 );

      Если "Цитата" не выводится, то или фильтр где-то отключен или цитата всё же есть, например даже простой пробел в "Цитате" будет считаться.

      2
      Ответить2 мес назад #