Quantcast
Channel: WebTuts » wordpress
Viewing all articles
Browse latest Browse all 10

the_content vs. the_excerpt

$
0
0

Do napisania tego wpisu zainspirowały mnie pytania jakie powtarzają się na różnego rodzaju forach. Pytania typu „Dlaczego w streszczeniach na stronie głównej nie wyświetlają się obrazki ani linki?” lub „Jak na stronie głównej wyświetlać całe wpisy?” itd. Rozwiązanie takich problemów jest zwykle banalne, a sam problem wynika z nieznajomości lub błędnego rozumienia działania funkcji the_content() i the_excerpt(). W tym wpisie postaram się zatem podsumować informacje na ten temat i podać rozwiązania najczęstszych problemów.

the_content()

Jest to funkcja odpowiedzialna za wyświetlanie pełnej treści wpisów, wykorzystywana gdy wyświetlany jest pojedynczy wpis lub strona. Można ją jednak wykorzystać również do wyświetlania streszczenia na stronie głównej i innych stronach zbiorczych, np. kategorii, tagów itd. Aby tego dokonać, wpisy powinny zawierać specjalny znacznik <!--more-->, który wstawiasz w odpowiednim miejscu w treści, za pomocą guzika w edytorze.

Tag more

Wtedy na stronie głównej zamiast całego wpisu, zostanie wyświetlony tylko fragment, znajdujący się przed znacznikiem <!--more-->, a jeśli go nie wstawisz, pełna treść. Fragment będzie wyświetlany z zachowaniem wszelkiego formatowania, obrazków, linków itd. Na końcu fragmentu znajdzie się link do pełnej wersji wpisu.

Domyślnie (tj. jeśli szablon którego używasz nie modyfikuje tego zachowania w żaden sposób) link do pełnego wpisu ma postać ‚(more…)’ w wersji angielskiej WordPressa, lub ‚(więcej…)’ w wersji polskiej.

Tekst linka oczywiście można zmienić, podając jego treść jako parametr dla the_content():

<!--?php the_content("Czytaj dalej..."); ?-->

czego efektem będzie link z tekstem „Czytaj dalej…”.
Można również pójść krok dalej, i zmienić wygląd naszego linka. Wystarczy skorzystać z poniższego kodu:

<!--?php the_content('<span class="more"-->Czytaj dalej...'); ?>

a następnie dodać odpowiednie deklaracje dla klasy ‚more’ w pliku CSS.

the_excerpt()

the_excerpt() jest odpowiedzialny za wyświetlanie streszczenia (wypisu) artykułu. Może on zostać stworzony na kilka sposobów, które mają jednak dwie cechy wspólne (które zwykle są powodem pytań i nieporozumień):

  • wypisy są pozbawiane HTML, a więc korzystając z the_excerpt wyświetlony zostanie sam tekst, a wszelkie formatowanie, obrazki, linki itd. będą usunięte,
  • domyślnie, pod streszczeniem nie ma linka do pełnej wersji artykułu. Można go jednak dodać samodzielnie, o czym przeczytasz poniżej.

Opcja 1: Streszczenie tworzone ręcznie

W trakcie edycji wpisu, poniżej głównego pola tekstowego, znajduje się mniejsze pole tekstowe oznaczone jako Wypis (ang. Excerpt). Służy ono ręcznemu tworzeniu streszczenia wpisu, który ma za zadanie zachęcić do przeczytania pełnego artykułu. Jeśli nie widzisz tego pola, podczas edycji wpisu kliknij Opcje ekranu w prawym górnym rogu i zaznacz przy polu Wypis.

Po co miałbyś osobno tworzyć tekst streszczenia?

Dobrze napisane abstrakty mogą potencjalnie być bardziej zachęcające, niż te generowane automatycznie. Dodatkowo taki abstrakt można wykorzystać również w znaczniku meta description (sporo szablonów właśnie tak robi) na stronie wpisu, co może pozytywnie wpłynąć na ilość osób odwiedzających twoją stronę z wyszukiwarek. W tym kontekście pamiętaj jednak, że wypis nie powinien być dłuższy niż 160 znaków.

Opcja 2: Streszczenie automatyczne

Jeśli korzystasz z the_excerpt() i sam nie stworzysz Wypisu, zostanie on wygenerowany automatycznie. Będzie to pierwsze 55 słów wpisu. Aby zmienić domyślną długość, dodaj następujący kod do pliku functions.php:

function moje_streszczenie($length) {
	return 30;
}
add_filter('excerpt_length', 'moje_streszczenie');

Powyższy kod skróci automatycznie generowany wypis do 30 słów.

Opcja 3: Wypisy na podstawie znacznika <!--more-->

the_excerpt() również potrafi tworzyć wypisy na podstawie znacznika <!--more-->umieszczonego w treści. W tym przypadku jednak zasadnicza różnica, w stosunku do zastosowania the_content() w połączeniu ze znacznikiem <!--more--> polega na tym, że wyświetlony zostanie sam tekst, a na końcu nie będzie linka do pełnej wersji wpisu.

Pamiętaj, że nawet jeśli twój szablon wykorzystuje the_excerpt(), nie musisz ręcznie tworzyć Wypisów. Hierarchia jest następująca:

  1. Jeśli istnieje Wypis zdefiniowany ręcznie, zostanie on wyświetlony, niezależnie od tego czy wpis zawiera znacznik <!--more-->, czy nie. Nie ma tu znaczenia również ustawiona długość wypisu.
  2. Jeśli nie istnieje ręczny wypis, ale w trakcie edycji wpisu, wstawiłeś znacznik <!--more-->, fragment ten zostanie wykorzystany jako wypis. Jeśli zdefiniowałeś maksymalną ilość słów, a stworzony w ten sposób wypis ją przekroczy, zostanie on przycięty.
  3. Jeśli nie istnieje ręczny wypis, ani nie wstawiłeś znacznika <!--more-->, zostanie on wygenerowany automatycznie (domyślnie długości 55 słów).
Jeśli korzystasz z the_excerpt() a zależy Ci na tym, aby pod streszczeniem wyświetlał się link do pełnej wersji wpisu, wstaw poniższy kod do pliku functions.php w swoim szablonie:
function new_excerpt_more($more) {
       global $post;
	return '<a href="'. get_permalink($post->ID) . '">Czytaj dalej...</a>';
}
add_filter('excerpt_more', 'new_excerpt_more');

Mam nadzieję, że po lekturze tego wpisu, wiesz już czym się różni the_content() od the_excerpt() oraz wiesz, który bardziej odpowiada Twoim potrzebom. W razie dodatkowych pytań, zostaw komentarz poniżej.


Viewing all articles
Browse latest Browse all 10

Trending Articles


TRX Antek AVT - 2310 ver 2,0


Автовишка HAULOTTE HA 16 SPX


POTANIACZ


Zrób Sam - rocznik 1985 [PDF] [PL]


Maxgear opinie


BMW E61 2.5d błąd 43E2 - klapa gasząca a DPF


Eveline ➤ Matowe pomadki Velvet Matt Lipstick 500, 506, 5007


Auta / Cars (2006) PLDUB.BRRip.480p.XviD.AC3-LTN / DUBBING PL


Peugeot 508 problem z elektroniką


AŚ Jelenia Góra