WordPress Pagination Un Primer

În acest articol / tutorial vom analiza elementele de bază ale paginării WordPress, configurarea implicită de paginare și modul în care poate fi îmbunătățită.


Schema de paginare implicită

Voi folosi tema WordPress Twenty Eleven implicită ca referință. Chiar dacă nu o utilizați, o veți găsi în directorul de teme.

Mesaje pe pagină

Nu uitați că atunci când vine vorba de paginare, WordPress trebuie să știe câte elemente să fie listate pe fiecare pagină. Această valoare este setată în pagina Admin -> Setări -> Setări de citire.

Pagina "Pagini de blog arată cel mai mult" va fi folosită de WordPress dacă nu o suprascrieți, cum ar fi atunci când utilizați o interogare personalizată.

Codul implicit de redare

Un exemplu tipic de afișare a unei liste de postări este atunci când vizualizați toate postările dintr-o categorie. Afișarea postărilor pentru categorii este gestionată de fișierul template category.php. Pentru tema Twenty Eleven, pagina categoriei împarte afișarea paginării la o funcție numită twentyeleven_content_nav, care se găsește în funcțiile.php.

 funcția twentyeleven_content_nav ($ nav_id) global $ wp_query; dacă ($ wp_query-> max_num_pages> 1):?>   

Codul de mai sus ar putea fi la fel de bine incluși direct în categoria.php, dar designerii Twenty Eleven au decis să o facă o funcție, astfel încât să poată fi apelată din mai multe fișiere de șabloane. Majoritatea codului se referă la aspect și internaționalizare, dar iată ce face:

  • utilizând valoarea variabilei globale de interogare $ wp_query-> max_num_pages, verificăm dacă avem mai mult de o pagină; acest lucru evită afișarea întregului bloc de paginare dacă există o singură pagină de postări
  • funcția WordPress next_posts_link afișează un link către următoarea pagină de postări și ia un argument opțional pentru textul linkului personalizat
  • în mod similar, funcția WordPress anterior_posts_link afișează un link către pagina anterioară de postări

Și așa va arăta cu un set de două postări pe pagină.

Este destul de bază, dar este funcțională. Problemele cu acest afișaj sunt că nu există nicio modalitate de a spune care este pagina pe care vă aflați sau câte pagini există în total.

Un lucru pe care trebuie să-l amintiți despre listele postate implicite ale WordPress este că acestea rulează în ordine inversă:

Deoarece interogările post sunt de obicei sortate în ordine cronologică inversă, next_posts_link () indică, de obicei, intrări vechi (către sfârșitul setului) și prev_posts_link () indică, de obicei, intrări mai noi (spre începutul setului).

Acest comportament poate fi modificat dacă creați o interogare personalizată. Notați în exemplul de mai sus, au fost utilizate două blocuri de paginare: unul înainte ca buclele postale să înceapă și unul după. Este întotdeauna o atingere drăguță de a avea pagini atât în ​​partea superioară, cât și în partea inferioară, astfel încât utilizatorul să nu trebuiască să deruleze prea mult.

Exemple:

Pentru a afișa "Du-te la pagina următoare ..." atunci când conectați textul:

 next_posts_link ("Accesați pagina următoare ...");

Pentru a afișa o imagine în loc de text:

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

Alternativă

Există o alternativă la utilizarea funcțiilor separate next_posts_link și previous_posts_link, și anume funcția posts_nav_link. În mod esențial, această funcție scoate ambele legături anterioare și următoare într-o singură lovitură, cu text opțional de legătură și argumente de separator de linkuri.

Ieșirea implicită:

 posts_nav_link ();

Și cu text de link personalizat și un separator:

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

Vă sugerăm să utilizați funcțiile separate next_posts_link și previous_posts_link, deoarece acestea vă oferă mai mult control asupra plasării legăturilor dvs., precum și pentru a face codul mai ușor de înțeles.


Trimiterea mesajelor unice pe pagini

Când afișați mesaje individuale, este bine să afișați un link la posturile anterioare și următoare din secvență. Fișierul șablon single.php se ocupă de acesta cu următorul cod:

 

Acest lucru vă va oferi acest lucru:

Funcțiile next_post_link și previous_post_link care produc legăturile de paginare din partea dreaptă sus. Aceste funcții acceptă câțiva parametri care ne permit să customizăm performanțele lor destul de bine. Parametrii sunt:

next_post_link (format, link, in_same_cat, excluded_categories);

Formatul și parametrii de legătură funcționează împreună. Format este modul în care doriți să apară linkul:% link în format este folosit ca substituent pentru conținutul parametrului link, care este textul pe care dorim să îl folosim pentru link. Deci asta:

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

Ne-ar da acest lucru:

Dacă vrem să afișăm titlul real al postării următoare sau anterioare, vom folosi valoarea specială% title în parametrul link. Deci asta:

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

Ne-ar da acest lucru:

Parametrii rămași vă permit să vă asigurați că următoarea postată legată este în aceeași categorie și pentru a exclude anumite categorii. Consultați documentația așa cum este legată mai sus.

Ați putea afișa o imagine pentru link ca:

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

O soluție mai bună

La fel de ușor precum metodele de mai sus, acestea sunt, de asemenea, limitate. Din fericire, WordPress ne oferă funcția paginate_links. Acest lucru ne permite să creăm un adevărat set de linkuri de paginare, cum ar fi:

Mai jos este codul care transmite paginile de mai sus. Să aruncăm o privire la ceea ce face.

 global $ wp_query; $ total_pages = $ wp_query-> max_num_pages; dacă ($ total_pages> 1) $ current_page = max (1, get_query_var ("paginat")); echo paginate_links (array ('base' => get_pagenum_link (1). '% _%', 'format' => '/ page /% #%', 'current' => $ current_page, 'total' => $ total_pages ,)); 
  • globalizați obiectul wp_query astfel încât să putem prelua valoarea max_num_pages: acesta este numărul total de pagini returnate de interogare
  • găsiți pagina curentă prin preluarea variabilei "paged" cu get_query_var: folosim funcția max pentru a determina pagina curentă la 1
  • funcția paginate_links ia o serie de parametri: sunt afișate cele patru cele mai importante
  • extrageți adresa URL de bază a paginii cu funcția get_pagenum_link și adăugați modelul% _% care va fi înlocuit cu parametrul format, următor
  • în cazul nostru, specificați un model de format care se conformează modului în care apar destul de permalinks (setat cu% postname% din Admin -> Settings -> Permalinks): parametrul% _% din parametrul de bază va fi înlocuit de acest
  • setați paginile curente și totale așa cum au fost preluate anterior

Adresa URL a rezultatelor pager folosind destul de permalinks va arata cam asa:

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

Apelul get_pagenum_link (1) va prelua această parte a adresei URL:

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

Apoi furnizăm un parametru format pentru restul adresei URL care este:

pagina 2

Partea% #% a formatului păstrează numărul paginii curente

Pe baza acestui set de parametri, paginate_links va afișa un set de linkuri de paginare. Ați putea să inserați codul direct într-un fișier șablon care gestionează paginarea (cum ar fi category.php) sau să îl salvați ca o funcție în funcțiile dvs..php și apoi să-l sunați din orice șablon doriți.

paginate_links are alți parametri care vă permit să adaptați ieșirea, modul în care apar numerele și ceea ce spun etichetele. Consultați documentația. Cu un pic de stil, este ușor să veniți cu un afișaj impresionant de paginare. Cu acest cod modificat și stilul adăugat:

 global $ wp_query; $ total_pages = $ wp_query-> max_num_pages; dacă ($ total_pages> 1) $ current_page = max (1, get_query_var ("paginat")); echo "
„; echo paginate_links (array ('base' => get_pagenum_link (1). '% _%', 'format' => '/ page /% #%', 'current' => $ current_page, 'total' => $ total_pages , 'prev_text' => 'Prev', 'next_text' => 'Următorul')); echo "
„;
 .pag_nav. pagini-numere padding: 4px 8px; margine: 0px 4px; margine: 1 pix solid gri; Culoare: # FFB134;  .page_nav .current border: 1px masiv # FFB134; culoare de fundal: #FBEFDB;  .page_nav .prev, .page_nav.next border: none; Culoarea albastra; 

Era ușor de realizat acest lucru:

Sper că te-ai bucurat de acest primer pe paginare. Aveți alte sfaturi despre paginare cu WordPress? Spuneți-ne în comentariile de mai jos.

Cod