
✂️ 5 Porad dotyczących konfiguracji fragmentów w WordPress
Ви wchodzą Państwo na stronę główną swojego bloga i widzą ogromne fragmenty postów rozciągnięte na trzy ekrany. Czytelnik nie będzie przewijał trzech ekranów dla jednego artykułu, tylko wyjdzie. Albo odwrotnie: zapowiedzi urywają się w pół słowa, link „Czytaj dalej" nie pojawia się, a kanał RSS wygląda jak ogryzki zdań bez początku i końca.
Zazwyczaj WordPress przycina fragmenty po pierwszych 55 słowach i wstawia standardowy wielokropek. Żadnych ustawień długości, żadnej personalizacji tekstu linku, a dla stron (Pages) fragmenty w ogóle nie są przewidziane. Wszystko to da się rozwiązać, ale nie przez klikanie w checkboxy, tylko kilkoma linijkami kodu.
Poniżej 5 praktycznych technik: od zmiany długości fragmentu dla całej witryny po precyzyjne dostosowanie do kategorii i automatyczne wstawianie linku „Czytaj dalej". Każda z gotowym snippetem, który kopiuje się i wkleja do functions.php.
💡 Szybki przegląd:
- Zmieniamy długość fragmentu dla całej witryny jedną funkcją w functions.php
- Ustalamy różną długość dla różnych kategorii za pomocą warunku in_category()
- Dodajemy link „Czytaj dalej" na końcu każdego fragmentu
- Włączamy fragmenty dla stron WordPress jedną linijką kodu
- Zarządzamy fragmentami bez programowania za pomocą wtyczki Advanced Excerpt
Czym są fragmenty w WordPress i jak działają
Fragment (excerpt) to zwięzły opis postu, który wyświetla się w listach wpisów: na stronie głównej, w archiwach kategorii, w wynikach wyszukiwania i w RSS. W przeciwieństwie do tagu <!--more-->, który przycina treść w dowolnym miejscu, fragment jest samodzielną encją: WordPress albo pobiera Pana/Pani ręczny tekst z metaboksu „Fragment", albo generuje go automatycznie z pierwszych 55 słów postu.
Ręczny fragment ma zawsze wyższy priorytet. Jeśli wypełnił Pan/Pani pole „Fragment" w edytorze, system pokaże właśnie jego, ignorując automatyczne przycinanie. Daje to pełną kontrolę: można napisać sensowne podsumowanie, zamiast zadowalać się pierwszymi dwoma zdaniami, które przypadkowo znalazły się na początku tekstu.
Problem w tym, że metaboks „Fragment" jest domyślnie ukryty. Włącza się go w „Ustawieniach ekranu" (przycisk na górze strony edycji postu): proszę zaznaczyć pole przy „Fragment", a pole pojawi się pod edytorem. Dalej zaczyna się personalizacja: pięć technik poniżej pokrywa wszystkie typowe scenariusze.
1. Zmieniamy długość fragmentu przez functions.php
To podstawa. WordPress domyślnie odcina 55 słów, to za mało na wyrazistą zapowiedź, ale wystarczająco, by czytelnik zrozumiał temat. Jeśli potrzebują Państwo więcej (lub mniej), filtr excerpt_length rozwiązuje zadanie jedną funkcją.
Co robi kod: przedefiniowuje liczbę słów, którą WordPress zwraca w the_excerpt(). Nie dotyka ręcznych fragmentów: jeśli wypełnił Pan/Pani pole w edytorze, wyświetli się ono bez zmian.
- Proszę otworzyć
functions.phpswojego motywu (Wygląd → Edytor motywu →functions.php) lub przez FTP - Proszę dodać na końcu pliku (przed
?>, jeśli występuje):
1 function my_excerpt_length($length) { 2 return 110; 3 } 4 add_filter('excerpt_length', 'my_excerpt_length');
- Proszę zapisać plik
Liczba 110 to liczba słów. Dla typowego bloga 80-120 słów daje 3-4 zdania, to wystarczy na sensowną zapowiedź bez przeciążania strony głównej. Czytniki RSS również będą wdzięczne: mają one swoje limity, a zbyt długi fragment może zostać przycięty bardziej agresywnie, niż Pan/Pani zakładał.
Jeśli używa Pan/Pani motywu blokowego (Block Theme, FSE), functions.php może nie występować lub nie działać zgodnie z oczekiwaniami. W takim przypadku proszę utworzyć motyw potomny lub użyć wtyczki Code Snippets, która dodaje snippety bez edycji plików motywu.
2. Różna długość fragmentu dla różnych kategorii
Wiadomościom wystarczy 30 słów, a recenzjom i poradnikom potrzeba 100-120. Filtr excerpt_length w podstawowej wersji daje jedną wartość dla całej witryny, co jest nieelastyczne. Poniższy kod rozwiązuje kwestię długości według kategorii.
Scenariusz A, jedna kategoria ze specjalną długością. Ma Pan/Pani kategorię „Reviews", gdzie fragmenty mają być krótsze:
1 function excerpt_length_category($length) { 2 if (in_category('Reviews')) { 3 return 20; 4 } else { 5 return 60; 6 } 7 } 8 add_filter('excerpt_length', 'excerpt_length_category');
Proszę zastąpić Reviews slugiem swojej kategorii, a liczby tymi, które są Panu/Pani potrzebne.
Scenariusz B, kilka kategorii z różną długością. Kaskada if/elseif/else pokrywa trzy poziomy: jedną kategorię, grupę kategorii i całą resztę:
1 function excerpt_length_category($length) { 2 if (in_category('Review')) { 3 return 35; 4 } elseif (in_category(array('News', 'Videos', 'Editorial'))) { 5 return 60; 6 } else { 7 return 55; 8 } 9 } 10 add_filter('excerpt_length', 'excerpt_length_category');
in_category() przyjmuje slug kategorii (ciąg znaków) lub tablicę slugów. Warunki są sprawdzane po kolei, zadziała pierwsze dopasowanie. W powyższym przykładzie: posty z „Review" otrzymują 35 słów, z „News", „Videos" i „Editorial" 60, cała reszta 55.
Po zapisaniu proszę sprawdzić stronę główną i kilka stron kategorii: długość fragmentów powinna się różnić w zależności od tego, do której kategorii przypisany jest post.
3. Dodajemy link „Czytaj dalej" na końcu fragmentu
Fragment się urywa, a czytelnik nie zawsze rozumie, że to tylko zapowiedź, a nie cały artykuł. Link na końcu fragmentu rozwiązuje problem: wyraźne wezwanie do kliknięcia i przeczytania w całości.

WordPress domyślnie wstawia [...] w miejscu przycięcia, ale nie jest to link. Filtr excerpt_more zastępuje wielokropek niestandardowym ciągiem znaków z HTML:
1 function excerpt_readmore($more) { 2 return '... <a href="' . get_permalink($post->ID) . '" class="readmore">' . 'Read More' . '</a>'; 3 } 4 add_filter('excerpt_more', 'excerpt_readmore');
Co można zmienić:
- Tekst linku, zamień
Read Morena własny wariant, na przykładЧитать дальшеlubПодробнее - Klasa CSS,
readmorew atrybucieclassmożna zastąpić własną i ostylować link przez CSS (kolor, rozmiar, odstęp, podkreślenie) - Separator, trzy kropki ze spacją
'... 'przed tagiem<a>można usunąć lub zastąpić przez|albo,
Po zapisaniu proszę otworzyć stronę główną bloga lub archiwum, na końcu każdego fragmentu pojawi się klikalny link do pełnego posta. Działa to również w RSS (większość czytników wyświetla linki HTML poprawnie).
4. Włączamy fragmenty dla stron WordPress
Strony (Pages) w WordPressie nie obsługują fragmentów domyślnie. Typ wpisu page nie jest zarejestrowany z obsługą excerpt, a metabox w edytorze nie pojawia się, nawet jeśli włączymy go w „Ustawieniach ekranu". Czasem jest to jednak potrzebne: landing page z zapowiedziami stron podrzędnych, niestandardowe wyświetlanie przez WP_Query, strony usług w formie kart.
Rozwiązanie, jedna funkcja, która dodaje obsługę fragmentów dla typu wpisu page:
1 function wploop_pages_excerpt() { 2 add_post_type_support('page', 'excerpt'); 3 } 4 add_action('init', 'wploop_pages_excerpt');
Po zapisaniu functions.php:
- Proszę wejść do edytora dowolnej strony
- Kliknąć „Ustawienia ekranu" na górze
- Zaznaczyć pole „Fragment", teraz ta opcja jest dostępna
- Przewinąć stronę w dół, pole fragmentu się pojawiło
Jeśli używają Państwo niestandardowego typu wpisu (CPT), proszę zastąpić page slugiem swojego CPT, mechanika jest taka sama. Podczas rejestracji CPT przez register_post_type() można od razu podać 'supports' => array(..., 'excerpt') i obyć się bez dodatkowego kodu.
5. Zarządzanie zajawkami przez wtyczkę Advanced Excerpt
Nie chce Pan zaglądać do kodu? Wtyczka Advanced Excerpt daje wizualną kontrolę nad wszystkimi aspektami zajawki przez panel administracyjny.

Po instalacji i aktywacji (bezpłatna, z repozytorium WordPress) w menu „Ustawienia" pojawia się strona Advanced Excerpt z następującymi opcjami:
- Długość zajawki, w znakach lub słowach. Znaki są dokładniejsze przy kontroli układu, słowa, przy czytelności
- Wielokropek, znak lub kod HTML, którym urywa się zajawka. Domyślnie
…(wielokropek…). Można zastąpić przez[...], strzałkę, ikonę lub pozostawić puste - Sposób przycinania, według znaków (słowo może zostać ucięte w połowie) lub według zdań (zawsze całe zdanie, ale zajawka będzie dłuższa niż zadeklarowany limit)
- Link „Czytaj dalej", włączyć/wyłączyć, określić tekst, opakować w niestandardowy HTML
- Nie pokazuj ręcznych zajawek, jeśli włączone, wtyczka zawsze generuje zajawkę automatycznie, nawet jeśli wypełnił Pan pole ręcznie
- Usuwaj shortkody z zajawki, koniecznie proszę trzymać włączone, aby
[contact-form-7]lub[shortcode]nie wystawały w zapowiedzi - Filtr, wybór, przez którą funkcję motyw wyświetla zajawki:
the_excerpt(),the_content()lub obie. Jeśli nie jest Pan pewien, proszę zostawić oba zaznaczenia

Wtyczka używa tych samych hooków excerpt_length i excerpt_more, co ręczny kod z porad 1-3, ale opakowuje je w interfejs. Dokumentacja dla programistów, na GitHub Wiki, opisuje filtry do niestandardowej integracji.
Na rok 2026 wtyczka jest aktywna na ponad 80 000 witryn, ale aktualizuje się ją rzadko: ostatnie wydanie ukazało się w styczniu 2024 i jest przetestowane do WordPress 6.4. Przed instalacją na świeżej wersji WordPress proszę sprawdzić zgodność na środowisku stagingowym.
Zanim przejdziemy do często zadawanych pytań, krótkie wideo o pracy z zajawkami w WordPress w praktyce:
⁉️🤔 Często zadawane pytania
Czym ręczna zajawka różni się od tagu <!--more-->?
Zajawka to osobne pole, które jest wyświetlane przez funkcję
the_excerpt()w szablonach motywu. Tag<!--more-->wstawia się w treść wpisu i ucinathe_content()w konkretnym miejscu. Zajawka pokazuje się w listach wpisów i RSS, tag more działa tylko tam, gdzie używane jestthe_content(). Do krótkiego podsumowania w archiwach proszę brać zajawkę, do ucinania długiego wpisu na stronie głównej wystarczy tag more.
Dlaczego zajawka nie pojawia się, chociaż napisałem ją w edytorze?
Motyw nie wywołuje
the_excerpt()w odpowiednim szablonie. Proszę sprawdzić szablony archive.php, category.php, home.php i search.php. Jeśli jest tamthe_content(), ręczna zajawka jest ignorowana. Proszę zamienić nathe_excerpt()lub użyć konstrukcji warunkowejif (has_excerpt()) { the_excerpt(); } else { the_content(); }.
Czy można pokazywać miniaturę wpisu obok zajawki?
Tak, motyw musi wywoływać
the_post_thumbnail()przedthe_excerpt()w pętli. Większość nowoczesnych motywów WordPress robi to domyślnie. Jeśli nie, proszę dodać wywołanie miniatury w szablonie przed zajawką. Do niestandardowego układu proszę opakować oba wywołania w<div class="post-card">i ostylować przez CSS.
Jak usunąć zajawki tylko ze strony głównej, zostawiając je w archiwach?
Proszę użyć znacznika warunkowego
is_home()wewnątrz filtra. Na przykład wfunctions.php:
1 function disable_excerpt_on_home($excerpt) { 2 if (is_home()) { 3 return ''; 4 } 5 return $excerpt; 6 } 7 add_filter('get_the_excerpt', 'disable_excerpt_on_home');
Do dokładniejszego ustawienia według typu strony, kategorii lub typu wpisu proszę użyć wtyczki Advanced Excerpt z porady 5: w jej ustawieniach są checkboxy „Wyłącz na..." dla strony głównej, archiwów, wyszukiwania i pojedynczych stron.
Co robić z zajawkami od razu
Kolejność wdrażania, od prostego do złożonego. Proszę zacząć od porady 1: jedna funkcja, jedna liczba i długość zajawki w całej witrynie jest już pod kontrolą. Następnie proszę dodać link „Czytaj dalej" (porada 3), to krytyczne dla klikalności na stronie głównej i w RSS. Jeśli prowadzi Pan blog z działami o różnym formacie, porada 2 o długości według kategorii usunie dysonans między newsami a dłuższymi tekstami.
Wtyczkę Advanced Excerpt (porada 5) proszę brać, jeśli chce Pan całkowicie uniknąć kodu lub jeśli motyw używa niestandardowego sposobu wyświetlania treści i filtry excerpt_length/excerpt_more nie działają. W innych przypadkach kod z functions.php jest pewniejszy: mniej zależności, nie generuje obciążenia, działa z każdym motywem.
1



