In dit artikel / zelfstudie bekijken we de basisprincipes van WordPress-paginering, de standaardinstellingen voor paginering en hoe deze kunnen worden verbeterd.
Ik gebruik het standaard WordPress Twenty Eleven-thema als referentie. Zelfs als u het niet gebruikt, vindt u het in uw themadirectory.
Vergeet niet dat als het gaat om paginering, WordPress moet weten hoeveel items op elke pagina moeten worden weergegeven. Deze waarde wordt ingesteld op de pagina Beheerder -> Instellingen -> Instellingen lezen.
De "Blog-pagina's tonen hooguit" -waarde wordt gebruikt door WordPress, tenzij u het overschrijft, zoals wanneer u een aangepaste zoekopdracht gebruikt.
Een typisch voorbeeld van het weergeven van een lijst met berichten is wanneer u alle berichten in een categorie bekijkt. De weergave van categorieberichten wordt afgehandeld door het bestand category.php-sjabloon. Voor het thema Twenty Eleven geeft de categoriepagina de weergave van de paginering af aan de functie twentyeleven_content_nav, die is te vinden in functions.php.
function twentyeleven_content_nav ($ nav_id) global $ wp_query; if ($ wp_query-> max_num_pages> 1):?>De bovenstaande code had net zo goed rechtstreeks in category.php kunnen worden opgenomen, maar de ontwerpers van Twenty Eleven besloten om er een functie van te maken zodat deze uit veel sjabloonbestanden kon worden opgeroepen. Het grootste deel van de code is bedoeld voor lay-out en internationalisering, maar hier is wat het doet:
En zo ziet het eruit met een instelling van twee berichten per pagina.
Het is vrij eenvoudig, maar het is functioneel. De problemen met dit scherm zijn dat je niet kunt zien op welke pagina je staat of hoeveel pagina's er in totaal zijn.
Een ding om te onthouden over de standaard berichtoverzichten van WordPress is dat ze in omgekeerde volgorde worden uitgevoerd:
Omdat postvragen meestal in omgekeerde chronologische volgorde worden gesorteerd, verwijst next_posts_link () meestal naar oudere items (aan het einde van de set) en prev_posts_link () verwijst meestal naar nieuwere items (in de richting van het begin van de set).
Dat gedrag kan worden gewijzigd als u een aangepaste query maakt. Merk op dat in het bovenstaande voorbeeld twee pagingblokken werden gebruikt: één voor de paallus en één daarna. Het is altijd een goed idee om paginering bovenaan en onderaan te hebben, zodat de gebruiker niet te veel hoeft te scrollen.
Ga als volgt te werk om 'Ga naar de volgende pagina ...' weer te geven tijdens het linken van tekst:
next_posts_link ('Ga naar de volgende pagina ...');
Om een afbeelding in plaats van tekst weer te geven:
$ previous_posts_image = ''; previous_posts_link ($ previous_posts_image);
Er is een alternatief voor het gebruik van de afzonderlijke functies next_posts_link en previous_posts_link, en dat is de functie posts_nav_link. In principe voert deze functie zowel de vorige als de volgende link in één klap uit, met optionele linkteksten en linkscheidingsargumenten.
De standaarduitvoer:
posts_nav_link ();
En met aangepaste linktekst en een scheidingsteken:
posts_nav_link (':::', '<< Newer Posts', 'Older Posts >> ');
Ik stel voor de afzonderlijke functies next_posts_link en previous_posts_link te gebruiken, omdat deze u meer controle geven over de plaatsing van uw links en uw code begrijpelijker maken.
Bij het weergeven van afzonderlijke berichten is het leuk om een link naar de vorige en volgende berichten in de reeks weer te geven. Het sjabloonbestand single.php verwerkt dat met de volgende code:
Dat geeft je dit:
Het zijn de functies next_post_link en previous_post_link die de paging-links rechtsboven produceren. Deze functies accepteren een aantal parameters waarmee we hun uitvoer heel goed kunnen aanpassen. De parameters zijn:
next_post_link (formaat, link, in_same_cat, excluded_categories);
Het formaat en de linkparameters werken samen. Opmaak is de manier waarop u de koppeling wilt weergeven:% -link in de indeling wordt gebruikt als tijdelijke aanduiding voor de inhoud van de koppelingsparameter, wat de daadwerkelijke tekst is die we voor de koppeling willen gebruiken. Dus dit:
previous_post_link ('% link', '<< Next Newest Post' ); next_post_link( '%link', 'Next Oldest Post >> ');
Zou ons dit geven:
Als we de feitelijke titel van de volgende of vorige post wilden weergeven, gebruikten we de speciale waarde% title in de linkparameter. Dus dit:
previous_post_link ('% link', '<< Previous Post: %title' ); next_post_link( '%link', 'Next Post: %title >> ');
Zou ons dit geven:
Met de overige parameters kunt u ervoor zorgen dat het volgende bericht waarnaar wordt gelinkt in dezelfde categorie valt en bepaalde categorieën uitsluit. Raadpleeg de documentatie zoals hierboven gelinkt.
U zou een afbeelding voor de link kunnen weergeven zoals:
$ previous_post_link_image = ''; previous_post_link ('% link', $ previous_post_link_image);
Net zo eenvoudig als de bovenstaande methoden zijn, ze zijn ook beperkt. Gelukkig geeft WordPress ons de functie paginate_links. Dit stelt ons in staat om een echte reeks paginakoppelingen te maken, zoals deze:
Hieronder ziet u de code die de bovenstaande paginering uitvoert. Laten we eens kijken wat het doet.
globale $ wp_query; $ total_pages = $ wp_query-> max_num_pages; if ($ total_pages> 1) $ current_page = max (1, get_query_var ('paged')); echo paginate_links (array ('base' => get_pagenum_link (1). '% _%', 'format' => '/ page /% #%', 'current' => $ current_page, 'total' => $ total_pages ,));
De URL van pagina's met mooie permalinks zal er ongeveer zo uitzien:
http://2011.rosselliot.co.nz/category/honda/page/2/
De get_pagenum_link (1) oproep haalt dit deel van de URL op:
http://2011.rosselliot.co.nz/category/honda/
Vervolgens geven we een opmaakparameter voor de rest van de URL die:
pagina 2
Het% #% deel van het formaat bevat ons huidige paginanummer
Op basis van deze reeks parameters zal paginate_links een reeks pagingkoppelingen uitvoeren. U zou de code rechtstreeks kunnen invoegen in een sjabloonbestand dat paging (zoals category.php) afhandelt of het als een functie in uw functions.php opslaat en het vervolgens vanuit elke gewenste sjabloon oproepen.
paginate_links heeft andere parameters waarmee u de uitvoer kunt aanpassen, hoe de cijfers worden weergegeven en wat de labels zeggen. Raadpleeg de documentatie. Met een beetje styling is het gemakkelijk om met een indrukwekkend paginaniveau te komen. Met deze gewijzigde code en toegevoegde styling:
globale $ wp_query; $ total_pages = $ wp_query-> max_num_pages; if ($ total_pages> 1) $ current_page = max (1, get_query_var ('paged')); echo ''; echo paginate_links (array ('base' => get_pagenum_link (1). '% _%', 'format' => '/ page /% #%', 'current' => $ current_page, 'total' => $ total_pages , 'prev_text' => 'Prev', 'next_text' => 'Volgende')); echo '';
.page_nav .page-numbers padding: 4px 8px; marge: 0px 4px; rand: 1px effen grijs; color: # FFB134; .page_nav .current border: 1px solid # FFB134; background-color: #FBEFDB; .pagina_nav .prev, .page_nav .next border: none; kleur blauw;
Het was gemakkelijk om dit te produceren:
Ik hoop dat je hebt genoten van deze inleiding op paginering. Heeft u nog meer tips over paginering met WordPress? Laat het ons weten in de comments hieronder.