Skip to content

Все для WordPress, веб-розробки — і не тільки

✂️ Як змінити довжину excerpt у WordPress

✂️ Як змінити довжину 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 */
7function mytheme_excerpt_length( $length ) {
8 return 30;
9}
10add_filter( 'excerpt_length', 'mytheme_excerpt_length', 999 );

Що тут важливо:

  • Пріоритет 999, ключова деталь. WordPress внутрішньо застосовує свій фільтр із пріоритетом за замовчуванням (10). Якщо не вказати високий пріоритет, ваш колбек відпрацює раніше за системний і буде перезаписаний значенням 55. 999 гарантує, що ваш фільтр виконається останнім.
  • Повернення цілого числа, тільки integer. Рядок '30' викличе PHP Warning у строгому режимі.
  • Дочірня тема, правити functions.php батьківської теми не можна: зміни злетять під час оновлення. Якщо дочірньої теми немає, створіть її або використовуйте плагін Code Snippets.

Код вище змінює довжину для всіх викликів the_excerpt() на сайті. Число 30, приклад; підставте своє. Для новинного сайту типові 20-30 слів, для аналітичного блогу, 50-70, для портфоліо, 10-15.

Якщо ваш сайт працює за HTTPS і використовує сучасну версію PHP (8.0+), можна записати ще коротше, через стрілкову функцію:

1add_filter( 'excerpt_length', fn( $length ) => 40, 999 );

Але для сумісності зі старішими проєктами краще дотримуватися першого варіанту з іменованою функцією.

Різна довжина для різних сторінок

Універсальна цифра зручна, але рідко оптимальна. На головній блогу потрібно чіпляти читача розгорнутим анонсом (60-70 слів), а у віджеті «Схожі записи», коротким рядком у 15-20 слів. WordPress дозволяє задати умовну логіку через стандартні функції перевірки контексту:

1function 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}
16add_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, вони вирішують задачу ширше. Але для нашої мети цього достатньо: ви один раз додаєте фільтр і забуваєте.

Плагін Code Snippets в адмінці WordPress

Якщо ви твердо хочете саме 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 не давав ніколи.