the_excerpt()
Выводит "отрывок" (цитату) поста или первые 55 слов контента, со вставкой в конец [...]
.
Используется внутри Цикла WordPress.
Если "Отрывок" не указан (указывается при создании поста), то функция "создаст" его самостоятельно из первых 55 слов контента. HTML теги, шорткоды и графика при этом будут вырезаны (они не будут учитываться при подсчете слов).
Если "Отрывок" указан, то он будет выведен как есть. Конструкция [...]
не добавляется в конец в этом случае.
Если текущая запись является вложением (выводится на странице: attachment.php или image.php), то эта функция выведет текст указанный в поле "описание" (caption) и текст не будет иметь на конце конструкции [...]
.
Итоговый текст (результат работы функции) пропускается через фильтр the_excerpt, который среди прочего обрабатывает текст функцией wpautop() - оборачивает цитату в тег <p>.
Отличие от the_content()
Эта функция не обрабатывает тег <!--more-->
в контенте записи, поэтому иногда лучше использовать the_content().
В качестве альтернативы этой функции можно использовать мою функцию kama_excerpt(). Она работает быстрее и имеет ряд своих преимуществ.
Хуки из функции
Возвращает
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.7.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() ); }