
✂️ Как изменить длину excerpt в WordPress
Вы заходите на архив блога, а там, «кирпичи»: у одного поста анонс на пол-экрана, у другого, сухие две строчки. Всё потому, что WordPress по умолчанию режет excerpt на 55 слов, число, которое придумали почти два десятилетия назад и с тех пор не трогали.
Проблема в том, что универсальная длина не бывает правильной. Новостному сайту хватает 20 слов, лонгриду нужно 80, а портфолио, и вовсе 10. Хорошая новость: настроить свою длину можно без плагинов, одним фильтром в functions.php. И без риска сломать сайт.
💡 Быстрый обзор:
- Разобраться, что такое excerpt и почему 55 слов не догма
- Изменить длину через фильтр
excerpt_length(2 строки кода) - Настроить разную длину для главной, рубрик и custom post types
- Выбрать плагин, если код не вариант, и узнать что работает в 2026
- Найти ответы: excerpt vs «Читать далее», дубли контента, кастомные анонсы
Что такое excerpt и почему его длина важна
Excerpt, это автоматический анонс поста, который WordPress генерирует из первых 55 слов текста. Он появляется в блоговой ленте, на страницах категорий, в результатах поиска по сайту и в RSS-ленте. Если автор не заполнил поле «Цитата» вручную, работает автомат.
Число 55 пришло из ранних версий движка и не менялось с версии 2.7. Тогда средний пост состоял из 300-400 слов, и 55 было разумным компромиссом. Сегодня типичный материал на techblog, 1500+ слов, и короткий excerpt теряет смысл: читатель не понимает, о чём пост, а поисковики видят рваный текст в сниппетах.
Кроме эстетики, есть технический аспект. Если excerpt обрывается на середине предложения, Google может взять этот фрагмент в meta description, и ваш сниппет в выдаче выглядит неопрятно. Ровный, осмысленный анонс заданной длины исправляет ситуацию.
Меняем длину через фильтр excerpt_length
Самый надёжный способ, использовать встроенный фильтр excerpt_length. Он существует в ядре WordPress с версии 2.7.0 и не зависит ни от темы, ни от плагинов. Работает везде, где вызывается функция the_excerpt().
Вот минимальный код для файла functions.php вашей дочерней темы:
1 /** 2 * Меняет длину excerpt на 30 слов. 3 * 4 * @param int $length Текущая длина excerpt. 5 * @return int Новая длина excerpt. 6 */ 7 function mytheme_excerpt_length( $length ) { 8 return 30; 9 } 10 add_filter( 'excerpt_length', 'mytheme_excerpt_length', 999 );
Что здесь важно:
- Приоритет 999, ключевая деталь. WordPress internally применяет свой фильтр с приоритетом по умолчанию (10). Если не указать высокий приоритет, ваш колбэк отработает раньше системного и будет перезаписан значением 55. 999 гарантирует, что ваш фильтр выполнится последним.
- Возврат целого числа, только integer. Строка
'30'вызовет PHP Warning в строгом режиме. - Дочерняя тема, править
functions.phpродительской темы нельзя: изменения слетят при обновлении. Если дочерней темы нет, создайте её или используйте плагин Code Snippets.
Код выше меняет длину для всех вызовов the_excerpt() на сайте. Число 30, пример; подставьте своё. Для новостного сайта типичны 20-30 слов, для аналитического блога, 50-70, для портфолио, 10-15.
Если ваш сайт работает по HTTPS и использует современную версию PHP (8.0+), можно записать ещё короче, через стрелочную функцию:
1 add_filter( 'excerpt_length', fn( $length ) => 40, 999 );
Но для совместимости с более старыми проектами лучше придерживаться первого варианта с именованной функцией.
Разная длина для разных страниц
Универсальная цифра удобна, но редко оптимальна. На главной блога нужно цеплять читателя развёрнутым анонсом (60-70 слов), а в виджете «Похожие записи», краткой строкой в 15-20 слов. WordPress позволяет задать условную логику через стандартные функции проверки контекста:
1 function mytheme_conditional_excerpt_length( $length ) { 2 if ( is_front_page() && is_home() ) { 3 return 70; // Главная страница блога 4 } 5 if ( is_category() || is_tag() ) { 6 return 45; // Страницы рубрик и меток 7 } 8 if ( is_search() ) { 9 return 30; // Страница поиска 10 } 11 if ( is_page_template( 'template-portfolio.php' ) ) { 12 return 15; // Шаблон портфолио 13 } 14 return 55; // Всё остальное 15 } 16 add_filter( 'excerpt_length', 'mytheme_conditional_excerpt_length', 999 );
Этот подход покрывает подавляющее большинство реальных сценариев. Та же логика применима к custom post types через is_singular( 'product' ) или is_post_type_archive( 'portfolio' ).
Важный нюанс: не каждая тема честно использует the_excerpt(). Некоторые премиум-темы (особенно старые, с собственными page builder'ами) вызывают wp_trim_words() напрямую или используют самописные обёртки. Фильтр excerpt_length в таких случаях не сработает. Если после добавления кода ничего не изменилось, откройте functions.php темы и поищите альтернативные вызовы; обычно проблема решается заменой кастомной функции на стандартный the_excerpt().
Плагины: а стоит ли?
Рынок плагинов для управления excerpt невелик, большинство задач решается кодом из предыдущих разделов. Исторически популярный Advanced Excerpt (100 000+ активных установок в прошлом) с 2024 года не обновлялся и не тестировался с последними версиями WordPress. На WP 6.8+ плагин не работает, отзывы пользователей это подтверждают. Устанавливать его в 2026 году нет смысла.
Что реально доступно:
- Code Snippets, бесплатный плагин, позволяющий добавлять PHP-код в админке без правки
functions.php. Подходит для любого сниппета из этой статьи: вставили фильтрexcerpt_length, активировали, работает. Плюс: не боится обновлений темы. Скачать: Code Snippets на WordPress.org. - WPCode, более новый инструмент с визуальным интерфейсом для вставки сниппетов, условной логикой и облачной библиотекой готовых рецептов. Если вы управляете несколькими сайтами и не хотите дублировать код, WPCode удобнее.
Оба плагина не специализируются именно на excerpt, они решают задачу шире. Но для нашей цели этого достаточно: вы один раз добавляете фильтр и забываете.

Если вы твёрдо хотите именно GUI-интерфейс для excerpt (поля ввода длины, чекбоксы, выбор HTML-тегов), на момент 2026 года отдельного живого плагина с такой функциональностью в репозитории WordPress.org нет. Все существовавшие ранее либо заброшены, либо конфликтуют с PHP 8.2+. В этой ситуации надёжнее освоить фильтр excerpt_length, это две строки кода, которые не сломаются ни при каком обновлении движка.
Перед тем как перейти к частым вопросам, небольшое видео, в котором показан процесс добавления кода в тему WordPress:
⁉️🤔 Частые вопросы
Чем excerpt отличается от тега «Читать далее»?
Тег
<!--more-->(кнопка «Читать далее») обрывает пост в том месте, где вы его поставили, и сохраняет всё форматирование: картинки, списки, заголовки. Excerpt, это всегда очищенный текст без HTML-тегов (если не используется плагин). «Читать далее» управляет отображением на странице самого поста, excerpt, на архивных страницах. Это два разных механизма, которые могут работать одновременно.
Excerpt создаёт дубликаты контента для SEO?
Нет, если excerpt формируется функцией
the_excerpt()на архивных страницах, поисковики видят это какmeta descriptionдля соответствующих страниц, а не как дублированный контент. К тому же, грамотно настроенный excerpt помогает Google сформировать релевантный сниппет. Проблемы с дубликатами возникают, только если вы вставляете полный текст поста и на архивную, и на одиночную страницу без канонического URL.
Как задать полностью ручной текст анонса?
В редакторе поста WordPress есть поле «Цитата» (excerpt). Если оно заполнено, система использует ваш текст вместо автоматического. В классическом редакторе поле включается через «Настройки экрана» вверху справа. В блочном редакторе (Гутенберг), боковая панель «Запись» → вкладка «Анонс». Кастомный excerpt приоритетнее любого фильтра
excerpt_length.
Можно ли сохранить HTML в автоматическом excerpt?
Стандартный фильтр
excerpt_lengthне управляет тегами,wp_trim_excerpt()всегда очищает HTML. Чтобы сохранить форматирование, нужен отдельный подход: либо плагин (но рабочих в 2026 году нет), либо замена стандартного excerpt-генератора через фильтрwp_trim_excerptс собственным кодом, это уже продвинутая техника для разработчиков.
Почему фильтр не работает с моей темой?
Три типичные причины: 1) тема не вызывает
the_excerpt(), а использует самописную функцию, проверьте шаблоны archive.php, category.php, search.php; 2) приоритет фильтра ниже, чем у встроенного обработчика WordPress, используйте999; 3) файлfunctions.phpредактировался в родительской теме, а не в дочерней, и изменения не подхватились.
Менять длину excerpt: код или плагин?
Фильтр excerpt_length покрывает потребности подавляющего большинства сайтов на WordPress. Две строки в functions.php, и длина анонсов становится ровно такой, какой вы хотите её видеть: на главной, в рубриках, в поиске, для кастомных типов записей. Отдельные плагины под excerpt в 2026 году искать не нужно, они либо заброшены, либо избыточны.
Если вы ни разу не правили functions.php, начните с Code Snippets. Это бесплатно, безопасно и не зависит от обновлений темы. А когда освоитесь, условная логика с is_front_page() и is_category() откроет уровень контроля, который ни один GUI-плагин для excerpt не давал никогда.



