the_excerpt()
Выводит "отрывок" (цитату) поста или первые 55 слов контента, со вставкой в конец [...].
Используется внутри Цикла WordPress.
Если "Отрывок" не указан (указывается при создании поста), то функция "создаст" его самостоятельно из первых 55 слов контента. HTML теги, шорткоды и графика при этом будут вырезаны (они не будут учитываться при подсчете слов).
Если "Отрывок" указан, то он будет выведен как есть. Конструкция [...] не добавляется в конец в этом случае.
Если текущая запись является вложением (выводится на странице: attachment.php или image.php), то эта функция выведет текст указанный в поле "описание" (caption) и текст не будет иметь на конце конструкции [...].
Итоговый текст (результат работы функции) пропускается через фильтр the_excerpt, который среди прочего обрабатывает текст функцией wpautop() - оборачивает цитату в тег <p>.
Отличие от the_content()
Эта функция не обрабатывает тег <!--more--> в контенте записи, поэтому иногда лучше использовать the_content().
Альтернативы
- Кастомная функция kama_excerpt(). Она работает быстрее и имеет ряд своих преимуществ.
- wp_trim_words().
Хуки из функции
Возвращает
null. Ничего. Выводит на экран короткий текст.
Использование
<?php the_excerpt(); ?>
Примеры
#1 Создаем ссылку "Читать дальше..." на конце
Опять используем фильтр 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>';
} #2 Изменение длины обрезаемого текста
По умолчанию, длина по которому режется текст - это 55 слов, чтобы изменить этот параметр, можно использовать фильтр excerpt_length, для этого поместите такой код в файл темы functions.php:
add_filter( 'excerpt_length', function(){
return 20;
} ); #3 Базовое использование
Выведем "Цитату" поста на страницах архивов (категории, метки, авторы, даты):
<?php the_excerpt(); ?>
#4 Использование вместе с условными тегами
Проверим является ли данная страница разделом категории, если да, то заменим the_content() на the_excerpt():
if ( is_category() ) {
the_excerpt();
}
else {
the_content();
} #5 Удаление конструкции [...] на конце
По умолчанию, если текст обрезается, то в конце добавляется [...], изменить [...] можно через фильтр excerpt_more. Добавим такой код в файл темы functions.php:
add_filter( 'excerpt_more', function( $more ) {
return '...';
} );
// в php 7.4+ можно сократить так:
add_filter( 'excerpt_more', fn() => '...' );
Список изменений
| С версии 0.71 | Введена. |
Код the_excerpt() the excerpt WP 6.9.1
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() );
}