WordPress Pagination En Primer

I denne artikkelen / opplæringen vil vi se på grunnleggende om WordPress-paginering, standard paginasjonsoppsett og hvordan det kan forbedres.


Standardpagineringskjema

Jeg bruker standard WordPress Twenty Eleven tema som referanse. Selv om du ikke bruker det, finner du det i temakatalogen.

Innlegg per side

Ikke glem at når det gjelder paginering, trenger WordPress å vite hvor mange elementer som skal listes på hver side. Denne verdien er angitt på siden Admin -> Innstillinger -> Leseinnstillinger.

"Blogsider viser høyst" verdien vil bli brukt av WordPress med mindre du tilsidesætter den, for eksempel når du bruker et tilpasset søk.

Standard Paging Code

Et typisk eksempel på visning av innlegg er når du ser alle innlegg i en kategori. Visningen av kategoriinnlegg blir håndtert av category.php malfilen. For det tjuefemte temaet, kategoriserer siden av siden pagineringens visning til en funksjon kalt twentyeleven_content_nav, som finnes i functions.php.

 funksjon twentyeleven_content_nav ($ nav_id) global $ wp_query; hvis ($ wp_query-> max_num_pages> 1):?>   

Ovennevnte kode kan like godt ha blitt inkludert direkte i category.php, men designerne av tjue elleve bestemte seg for å gjøre den til en funksjon slik at den kunne bli hentet fra mange malfiler. Mesteparten av koden er for layout og internasjonalisering, men her er hva det gjør:

  • Ved å bruke verdien av den globale spørringsvariabelen $ wp_query-> max_num_pages, ser vi om vi har mer enn én side; dette unngår å vise hele personsøkingsblokken hvis det bare er én side med innlegg
  • WordPress-funksjonen next_posts_link viser en lenke til neste side av innlegg og tar et valgfritt argument for tilpasset lenketekst
  • På samme måte viser WordPress-funksjonen previous_posts_link en lenke til forrige side av innlegg

Og det er slik det vil se ut med en innstilling på to innlegg per side.

Det er ganske enkelt, men det er funksjonelt. Problemene med denne skjermen er at det ikke er mulig å fortelle hvilken side du er på, eller hvor mange sider det er totalt.

En ting å huske om WordPresss standard postoppføringer er at de kjører i omvendt rekkefølge:

Fordi etterspørsmål vanligvis sorteres i omvendt kronologisk rekkefølge, peker next_posts_link () vanligvis på eldre oppføringer (mot slutten av settet) og prev_posts_link () peker vanligvis på nyere oppføringer (mot begynnelsen av settet).

Atferden kan endres hvis du oppretter et tilpasset søk. Merk i eksempelet ovenfor, ble to personsøkingsblokker brukt: en før postsløyfen startet og en etter. Det er alltid en fin touch å ha paginering både på toppen og bunnen, slik at brukeren ikke trenger å rulle for mye.

eksempler:

For å vise "Gå til neste side ..." som du kobler til tekst:

 next_posts_link ('Gå til neste side ...');

Slik viser du et bilde i stedet for tekst:

 $ previous_posts_image = ''; previous_posts_link ($ previous_posts_image);

Alternativ

Det er et alternativ til å bruke de separate funksjonene next_posts_link og previous_posts_link, og det er posts_nav_link-funksjonen. I utgangspunktet utfører denne funksjonen både de forrige og neste koblingene i ett fall, med valgfrie linktekst og koblingsseparator argumenter.

Standardutgangen:

 posts_nav_link ();

Og med tilpasset lenke og en separator:

 posts_nav_link (':::', '<< Newer Posts', 'Older Posts >> ');

Jeg foreslår at du bruker de separate funksjonene next_posts_link og previous_posts_link, da disse gir deg mer kontroll over plasseringen av linkene dine, og gjør koden din mer forståelig..


Personsøker Enkelt innlegg

Når du viser enkelt innlegg, er det fint å vise en kobling til forrige og neste innlegg i sekvensen. Malen filen single.php håndterer det med følgende kode:

 

Det vil gi deg dette:

Det er funksjonene next_post_link og previous_post_link som produserer personsøkelinkene øverst til høyre. Disse funksjonene godtar et par parametere som gjør at vi kan tilpasse produksjonen ganske pent. Parametrene er:

next_post_link (format, link, in_same_cat, excluded_categories);

Format- og lenkeparametrene fungerer sammen. Format er hvordan du vil at linken skal vises:% link i formatet brukes som plassholder for innholdet i lenkeparameteren, som er den faktiske teksten vi ønsker å bruke for linken. Så dette:

 previous_post_link ('% link', '<< Next Newest Post' ); next_post_link( '%link', 'Next Oldest Post >> ');

Ville gi oss dette:

Hvis vi ønsket å vise den faktiske tittelen til neste eller forrige innlegg, ville vi bruke den spesielle verdien% tittelen i koblingsparameteren. Så dette:

 previous_post_link ('% link', '<< Previous Post: %title' ); next_post_link( '%link', 'Next Post: %title >> ');

Ville gi oss dette:

De gjenstående parameterne tillater deg å sikre at neste innlegg knyttet til er i samme kategori og å ekskludere bestemte kategorier. Se dokumentasjonen som koblet over.

Du kan vise et bilde for koblingen som:

 $ previous_post_link_image = ''; previous_post_link ('% link', $ previous_post_link_image);

En bedre løsning

Like enkelt som de ovennevnte metodene er, er de også begrenset. Heldigvis gir WordPress oss paginate_links-funksjonen. Dette gjør at vi kan lage et ekte sett med paginasjonslenk, for eksempel dette:

Nedenfor er koden som utgiver ovennevnte paginering. La oss ta en titt på hva det gjør.

 global $ wp_query; $ total_pages = $ wp_query-> max_num_pages; hvis ($ total_pages> 1) $ current_page = max (1, get_query_var ('paged')); echo paginate_links (array ('base' => get_pagenum_link (1). '% _%', 'format' => '/ side /% #%', 'nåværende' => $ current_page, 'total' => $ total_pages ,)); 
  • globaliser wp_query-objektet slik at vi kan hente maks_num_pages-verdien: dette er det totale antall sider som returneres av spørringen
  • finn gjeldende side ved å hente variabelen 'paged' med get_query_var: vi bruker maksimal funksjon for å føre til at den nåværende siden er standard til 1
  • paginate_links-funksjonen tar en rekke parametere: de fire viktigste er vist
  • hente basisadressen for siden med get_pagenum_link-funksjonen og legg til% _% mønsteret til den som vil bli erstattet av formatparameteren, neste
  • I vårt tilfelle angi et formatmønster som stemmer overens med måten som ganske permalinks (sett med% etternavn% i Admin -> Innstillinger -> Permalinks) vises:% _% i basisparameteren vil bli erstattet av dette
  • sett gjeldende og totale sider som hentet tidligere

Nettadressen til pagerte resultater ved hjelp av ganske permalinks vil se slik ut:

http://2011.rosselliot.co.nz/category/honda/page/2/

Get_pagenum_link (1) anropet henter denne delen av nettadressen:

http://2011.rosselliot.co.nz/category/honda/

Vi gir deretter en formatparameter for resten av nettadressen som er:

side / 2

% #% Delen av formatet inneholder vårt nåværende sidenummer

Basert på dette settet med parametere, vil paginate_links sende ut et sett av personsøkingskoblinger. Du kan sette inn koden direkte i en malfil som håndterer personsøking (for eksempel category.php) eller lagre den som en funksjon i dine funksjoner.php, og ring den fra hvilken som helst mal du liker.

paginate_links har andre parametere som lar deg skreddersy utdataene, hvordan tallene vises og hva etikettene sier. Se dokumentasjonen. Med litt styling er det enkelt å komme opp med en imponerende paginasjonsdisplay. Med denne endrede koden og lagt til styling:

 global $ wp_query; $ total_pages = $ wp_query-> max_num_pages; hvis ($ total_pages> 1) $ current_page = max (1, get_query_var ('paged')); ekko '
'; echo paginate_links (array ('base' => get_pagenum_link (1). '% _%', 'format' => '/ side /% #%', 'nåværende' => $ current_page, 'total' => $ total_pages , 'prev_text' => 'Prev', 'next_text' => 'Next')); ekko '
';
 .page_nav .page-numbers polstring: 4px 8px; margin: 0px 4px; grense: 1px solid grå; color: # FFB134;  .page_nav .current border: 1px solid # FFB134; background-color: #FBEFDB;  .page_nav .prev, .page_nav .next border: none; color: blue; 

Det var lett å produsere dette:

Jeg håper du har hatt denne primeren på paginering. Har du ytterligere tips om paginering med WordPress? Gi oss beskjed i kommentarene nedenfor.