Ajouter une pagination à vos archives WordPress

Pagination archive WordPress avec paginate_links
WordPress Lecture 8 minutes • 5 mai 2018

Il existe plusieurs façons de configurer la pagination dans un thème WordPress. Une méthode populaire implique l'utilisation du plugin WP-PageNavi. Ce plugin est idéal pour les néophytes du développement WordPress, mais nombreux sont les développeurs de thèmes qui préfèrent éviter l'utilisation d'un plugin pour réaliser une fonction si primaire.

Paginate_links : Une fonction pour les Paginer toutes !

WordPress propose nativement une fonction injustement méconnue qui permet de créer une pagination pour vos archives : archive de custom posts, taxonomie, catégorie, tag et résultats de recherche :  la fonction paginate_links ()
 

Pagination dans archive.php

Commençons simplement par appliquer cette fonction à un exemple concret, la page archive.php classique. Celle qui regroupe tous vos articles WordPress.
Veillez au préalable à ajuster le nombre d'articles à afficher via l'administration de WordPress : Réglages > Lecture > "Les pages du site doivent afficher au plus"
[pastacode lang="php" manual="%3C%3Fphp%0A%2F**%0A%20*%20Exemple%20basique%20d'une%20page%20archive.php%20avec%20pagination%0A%20*%2F%0Aget_header()%3B%20%3F%3E%0A%3Cdiv%20class%3D%22wrap%22%3E%0A%0A%09%3Csection%20id%3D%22primary%22%20class%3D%22content-area%22%3E%0A%09%09%3Cdiv%20id%3D%22content%22%20class%3D%22site-content%22%20role%3D%22main%22%3E%0A%0A%09%09%09%3C%3Fphp%20%2F%2F%201-%20Boucle%20WordPress%20pour%20appeler%20tous%20les%20articles%0A%09%09%09if%20(%20have_posts()%20)%20%3A%20%3F%3E%0A%0A%09%09%09%09%3C%3Fphp%20while%20(%20have_posts()%20)%20%3A%0A%09%09%09%09%09the_post()%3B%3F%3E%0A%09%09%09%09%09%3Ch2%3E%3C%3Fphp%20the_title()%3B%3F%3E%3C%2Fh2%3E%0A%09%09%09%09%09%3C%3Fphp%20the_post_thumbnail()%3B%3F%3E%0A%09%09%09%09%09%3Cp%3E%3C%3Fphp%20the_excerpt()%3B%3F%3E%3C%2Fp%3E%0A%09%09%09%09%3C%3Fphp%20endwhile%3B%20%3F%3E%0A%0A%09%09%09%09%3C%3Fphp%20%2F%2F%202-%20Appel%20de%20la%20fonction%20paginate_links%0A%09%09%09%09%09global%20%24wp_query%3B%0A%0A%09%09%09%09%09%24big%20%3D%20999999999%3B%20%0A%0A%09%09%09%09%09echo%20paginate_links(%20array(%20%2F%2F%20Plus%20d'info%20sur%20les%20arguments%20possibles%20%20%3A%20https%3A%2F%2Fcodex.wordpress.org%2FFunction_Reference%2Fpaginate_links%0A%09%09%09%09%09%09'base'%20%3D%3E%20str_replace(%20%24big%2C%20'%25%23%25'%2C%20esc_url(%20get_pagenum_link(%20%24big%20)%20)%20)%2C%0A%09%09%09%09%09%09'format'%20%3D%3E%20'%3Fpaged%3D%25%23%25'%2C%0A%09%09%09%09%09%09'current'%20%3D%3E%20max(%201%2C%20get_query_var('paged')%20)%2C%0A%09%09%09%09%09%09'total'%20%3D%3E%20%24wp_query-%3Emax_num_pages%0A%09%09%09%09%09)%20)%3B%0A%09%09%09%09%09%0A%09%09%09%09%3F%3E%0A%09%09%09%09%09%09%0A%09%09%09%3C%3Fphp%20else%20%3A%20%3F%3E%0A%09%09%09%09%3Cp%3EAucun%20article%20%C3%A0%20afficher%3C%2Fp%3E%0A%09%09%09%3C%3Fphp%20endif%3B%20%3F%3E%0A%0A%09%09%3C%2Fdiv%3E%0A%09%3C%2Fsection%3E%0A%3C%2Fdiv%3E%0A%0A%3C%3Fphp%0Aget_footer()%3B" message="Ajouter une pagination à archive.php grâce à la fonction paginate_links() " highlight="" provider="manual"/]

Pagination dans une archive de custom posts

Le code suivant s'applique pour les archives personnalisées de custom post types (archive-monexemple.php). Par exemple, si vous avez créé un post type "recettes" alors voici comment tous les afficher sur leur page d'archive "archive-recettes.php", avec la pagination de 5 articles par page.
[pastacode lang="php" manual="%3C%3Fphp%0A%2F**%0A%20*%20archive-recettes.php%0A%20*%20Exemple%20basique%20d'une%20page%20archive%20personnalis%C3%A9e%20avec%20pagination%0A%20*%20Archive%20affichant%20tous%20les%20customs%20posts%20%22Recettes%22%0A%20*%2F%0Aget_header()%3B%20%3F%3E%0A%3Cdiv%20class%3D%22wrap%22%3E%0A%0A%09%3Csection%20id%3D%22primary%22%20class%3D%22content-area%22%3E%0A%09%09%3Cdiv%20id%3D%22content%22%20class%3D%22site-content%22%20role%3D%22main%22%3E%0A%09%09%09%3C%3Fphp%20%2F%2F%201-%20Cr%C3%A9ation%20d'une%20requ%C3%AAte%20personnalis%C3%A9e%20appelant%20les%20articles%20personnalis%C3%A9s%20Recette%0A%09%09%09%09%24paged%20%3D%20(%20get_query_var(%20'paged'%20)%20)%20%3F%20absint(%20get_query_var(%20'paged'%20)%20)%20%3A%201%3B%0A%0A%09%09%09%09%24args%20%3D%20array(%0A%09%09%09%09%09'posts_per_page'%20%3D%3E%205%2C%0A%09%09%09%09%09'post_type'%20%3D%3E%20'recette'%2C%0A%09%09%09%09%09'paged'%20%3D%3E%20%24paged%2C%0A%09%09%09%09)%3B%0A%0A%09%09%09%09%24query_recettes%20%3D%20new%20WP_Query(%20%24args%20)%3B%0A%09%09%09%09%3F%3E%0A%0A%0A%09%09%09%3C%3Fphp%20%2F%2F%202-%20Boucle%20classique%20pour%20appeler%20les%20articles%20correspondants%20%C3%A0%20a%20requ%C3%AAte%20pr%C3%A9c%C3%A9dente%0A%09%09%09if%20(%20%24query_recettes-%3Ehave_posts()%20)%20%3A%20%3F%3E%0A%0A%09%09%09%09%3C%3Fphp%20while%20(%20%24query_recettes-%3Ehave_posts()%20)%20%3A%0A%09%09%09%09%09the_post()%3B%3F%3E%0A%09%09%09%09%09%3Ch2%3E%3C%3Fphp%20the_title()%3B%3F%3E%3C%2Fh2%3E%0A%09%09%09%09%09%3C%3Fphp%20the_post_thumbnail()%3B%3F%3E%0A%09%09%09%09%09%3Cp%3E%3C%3Fphp%20the_excerpt()%3B%3F%3E%3C%2Fp%3E%0A%09%09%09%09%3C%3Fphp%20endwhile%3B%20%3F%3E%0A%0A%09%09%09%09%3C%3Fphp%20%2F%2F%203-%20Appel%20de%20la%20fonction%20paginate_links%0A%09%09%09%09%09%24big%20%3D%20999999999%3B%0A%0A%09%09%09%09%09echo%20paginate_links(%20array(%20%2F%2F%20Plus%20d'info%20sur%20les%20arguments%20possibles%20%3A%20https%3A%2F%2Fcodex.wordpress.org%2FFunction_Reference%2Fpaginate_links%0A%09%09%09%09%09%09'base'%20%3D%3E%20str_replace(%20%24big%2C%20'%25%23%25'%2C%20esc_url(%20get_pagenum_link(%20%24big%20)%20)%20)%2C%0A%09%09%09%09%09%09'format'%20%3D%3E%20'%3Fpaged%3D%25%23%25'%2C%0A%09%09%09%09%09%09'current'%20%3D%3E%20max(%201%2C%20get_query_var('paged')%20)%2C%0A%09%09%09%09%09%09'total'%20%3D%3E%20%24the_query-%3Emax_num_pages%0A%09%09%09%09%09)%20)%3B%20%0A%09%09%09%09%2F%2FFin%20de%20la%20fonction%20paginate_links%0A%09%09%09%3F%3E%20%0A%09%09%09%09%09%09%0A%09%09%09%3C%3Fphp%20else%20%3A%20%3F%3E%0A%09%09%09%09%3Cp%3EAucun%20article%20%C3%A0%20afficher%3C%2Fp%3E%0A%09%09%09%3C%3Fphp%20endif%3B%20%3F%3E%0A%09%09%3C%2Fdiv%3E%0A%09%3C%2Fsection%3E%0A%3C%2Fdiv%3E%0A%0A%3C%3Fphp%0Aget_footer()%3B" message="Pagination d'une archive personnalisée avec paginate_links()" highlight="" provider="manual"/]

Pagination dans une page category personnalisée

Pour une categorie personnalisée, le code est quasi le même que pour une archive personnalisée. Il suffit d'appeler "category_name" au lieu "post_type" et de préciser le nom de la catégorie voulue.
Exemple : je souhaite afficher tous les articles de la catégorie "surf" avec la pagination de 8 articles par page.
[pastacode lang="php" manual="%3C%3Fphp%0A%2F**%0A%20*%20category-surf.php%0A%20*%20Exemple%20basique%20d'une%20page%20category%20personnalis%C3%A9e%20avec%20pagination%0A%20*%20Page%20affichant%20tous%20les%20articles%20class%C3%A9s%20dans%20la%20cat%C3%A9gorie%20%22Surf%22%2C%20%C3%A0%20raison%20de%208%20par%20page%0A%20*%2F%0Aget_header()%3B%20%3F%3E%0A%3Cdiv%20class%3D%22wrap%22%3E%0A%0A%09%3Csection%20id%3D%22primary%22%20class%3D%22content-area%22%3E%0A%09%09%3Cdiv%20id%3D%22content%22%20class%3D%22site-content%22%20role%3D%22main%22%3E%0A%09%09%09%3C%3Fphp%20%2F%2F%201-%20Cr%C3%A9ation%20d'une%20requ%C3%AAte%20personnalis%C3%A9e%20appelant%20les%20articles%20personnalis%C3%A9s%20Recette%0A%09%09%09%09%24paged%20%3D%20(%20get_query_var(%20'paged'%20)%20)%20%3F%20absint(%20get_query_var(%20'paged'%20)%20)%20%3A%201%3B%0A%0A%09%09%09%09%24args%20%3D%20array(%0A%09%09%09%09%09'posts_per_page'%20%3D%3E%208%2C%0A%09%09%09%09%09'category_name'%20%3D%3E%20'surf'%2C%0A%09%09%09%09%09'paged'%20%3D%3E%20%24paged%2C%0A%09%09%09%09)%3B%0A%0A%09%09%09%09%24query_surf%20%3D%20new%20WP_Query(%20%24args%20)%3B%0A%09%09%09%09%3F%3E%0A%0A%0A%09%09%09%3C%3Fphp%20%2F%2F%202-%20Boucle%20classique%20pour%20appeler%20les%20articles%20correspondants%20%C3%A0%20a%20requ%C3%AAte%20pr%C3%A9c%C3%A9dente%0A%09%09%09if%20(%20%24query_surf-%3Ehave_posts()%20)%20%3A%20%3F%3E%0A%0A%09%09%09%09%3C%3Fphp%20while%20(%20%24query_surf-%3Ehave_posts()%20)%20%3A%0A%09%09%09%09%09the_post()%3B%3F%3E%0A%09%09%09%09%09%3Ch2%3E%3C%3Fphp%20the_title()%3B%3F%3E%3C%2Fh2%3E%0A%09%09%09%09%09%3C%3Fphp%20the_post_thumbnail()%3B%3F%3E%0A%09%09%09%09%09%3Cp%3E%3C%3Fphp%20the_excerpt()%3B%3F%3E%3C%2Fp%3E%0A%09%09%09%09%3C%3Fphp%20endwhile%3B%20%3F%3E%0A%0A%09%09%09%09%3C%3Fphp%20%2F%2F%203-%20Appel%20de%20la%20fonction%20paginate_links%0A%09%09%09%09%09%24big%20%3D%20999999999%3B%0A%0A%09%09%09%09%09echo%20paginate_links(%20array(%20%2F%2F%20Plus%20d'info%20sur%20les%20arguments%20possibles%20%3A%20https%3A%2F%2Fcodex.wordpress.org%2FFunction_Reference%2Fpaginate_links%0A%09%09%09%09%09%09'base'%20%3D%3E%20str_replace(%20%24big%2C%20'%25%23%25'%2C%20esc_url(%20get_pagenum_link(%20%24big%20)%20)%20)%2C%0A%09%09%09%09%09%09'format'%20%3D%3E%20'%3Fpaged%3D%25%23%25'%2C%0A%09%09%09%09%09%09'current'%20%3D%3E%20max(%201%2C%20get_query_var('paged')%20)%2C%0A%09%09%09%09%09%09'total'%20%3D%3E%20%24the_query-%3Emax_num_pages%0A%09%09%09%09%09)%20)%3B%20%0A%09%09%09%09%2F%2FFin%20de%20la%20fonction%20paginate_links%0A%09%09%09%3F%3E%20%0A%09%09%09%09%09%09%0A%09%09%09%3C%3Fphp%20else%20%3A%20%3F%3E%0A%09%09%09%09%3Cp%3EAucun%20article%20%C3%A0%20afficher%3C%2Fp%3E%0A%09%09%09%3C%3Fphp%20endif%3B%20%3F%3E%0A%09%09%3C%2Fdiv%3E%0A%09%3C%2Fsection%3E%0A%3C%2Fdiv%3E%0A%0A%3C%3Fphp%0Aget_footer()%3B" message="Pagination d'une category personnalisée avec paginate_links()" highlight="" provider="manual"/]
 

Pour aller plus loin

Ce code peut-être adapté très facilement à des tags, taxonomy et page de résultats de recherche. En général, vous n'aurez qu'à ajuster la requête à l'étape 1.
L'appel de la fonction de pagination s'appelle toujous de la même manière :
[pastacode lang="php" manual="%3C%3Fphp%20%2F%2F%203-%20Appel%20de%20la%20fonction%20paginate_links%0A%09%09%09%09%09%24big%20%3D%20999999999%3B%0A%0A%09%09%09%09%09echo%20paginate_links(%20array(%20%2F%2F%20Plus%20d'info%20sur%20les%20arguments%20possibles%20%3A%20https%3A%2F%2Fcodex.wordpress.org%2FFunction_Reference%2Fpaginate_links%0A%09%09%09%09%09%09'base'%20%3D%3E%20str_replace(%20%24big%2C%20'%25%23%25'%2C%20esc_url(%20get_pagenum_link(%20%24big%20)%20)%20)%2C%0A%09%09%09%09%09%09'format'%20%3D%3E%20'%3Fpaged%3D%25%23%25'%2C%0A%09%09%09%09%09%09'current'%20%3D%3E%20max(%201%2C%20get_query_var('paged')%20)%2C%0A%09%09%09%09%09%09'total'%20%3D%3E%20%24the_query-%3Emax_num_pages%0A%09%09%09%09%09)%20)%3B%20%0A%09%09%09%09%2F%2FFin%20de%20la%20fonction%20paginate_links%0A%09%09%09%3F%3E" message="Fonction de pagination WordPress paginate_links()" highlight="" provider="manual"/]
 
Ce tuto vous a sauvé la mise ? Vous connaissez d'autres techniques ? Partagez vos astuces en commentaires !
Rejoignez-nous sur Facebook pour d’autres tutoriels gratuits réguliers
Tibow Webdesign vous propose aussi ses services de conseils et de création sur-mesure pour WordPress. Devis et conseils gratuits ici.


Si cet article vous a aidé, lâchez votre plus bel applaudissement en remerciement ! 🤗


Avis clients

Tibow Webdesign

Tous les avis

Anaee France - anaee-france.fr 07/2023

Google Avis
Nous avons eu le plaisir de travailler avec Thibaut pour une refonte totale de notre site web, et avons particulièrement apprécié son dynamisme, ses compétences (notamment en webdesign mais également pour le développement web et la communication), ses conseils pour redonner un coup de jeune à notre site web, et sa réactivité. De plus Thibaut a très vite montré un intérêt pour nos sujets (recherche scientifique, étude des écosystèmes) et rapidement compris nos besoins pour améliorer notre visibilité, c’est un vrai plus ! Je remercie et recommande Thibaut pour le développement de sites web

Sabine Sans Photographe - sabinesans.fr Mai 2023

Google Avis
Je suis très satisfaite de mon site internet, il est épuré et fonctionnel comme je le souhaitais. Merci Thibaut, vous avez su être à l'écoute, rassurant et réactif.

Louise Malassigné - loumade.fr Novembre 2022

Google Avis
J’ai eu l’occasion de travailler avec Thibaut sur la refonte d’un site e-commerce pour un château, cela c’est très bien passé, la cliente était ravie de la prestation et du site. Thibaut est très réactif et professionnel. Je recommande !

Julie Deshayes Aout 2022

Google Avis
Thibaut a aidé mon club de ski nautique à apparaître sur internet , il est d’une rapidité et d’une efficacité extraordinaire, je vous recommande

Centre Emile Durkheim - centreemiledurkheim.fr Avril 2022

Google Avis
Nous avons fait appel à Thibaut pour la refonte de notre site web. nous sommes très contents de sa prestation, tant sur le plan humain que technique. Thibaut s'est rendu disponible. Il a su être à l'écoute, à su s'adapter à nos besoins spécifiques, a été force de propositions. C'est un réel plaisir de travailler avec Thibaut, nous ferons appel de nouveau à lui les yeux fermés.

Nicolas Bourvic - lecirejaune.com 25 février 2022

Consultant junior agence Le Ciré Jaune
Consultant en agence de communication, j'ai à plusieurs reprises fait appel à Thibaut pour la réalisation de sites internet (à ce jour 4). Professionnalisme, réactivité et une vraie compréhension du besoin client définit Thibaut.
Vous pouvez vous fier à son expertise, il saura répondre à vos questions les plus techniques. De plus, Thibaut n'est pas qu'un exécutant mais est force de proposition et construit une relation bienveillante et respectueuse, ce qui est déterminant pour la bonne réalisation d'un projet.

Je recommande vivement et je continuerai à faire appel à Thibaut.

Charlotte Devillers - dydu.ai 25 février 2022

Digital Marketing Manager at dydu
Pour la gestion de notre site web, nous sommes passés d'une agence à Thibaut et nous ne regrettons pas notre décision ! Thibaut est un véritable couteau suisse : c'est un expert en dév, webdesign, web marketing… La complémentarité de toutes ces compétences font que Thibaut comprend rapidement nos objectifs marketing et commerciaux, proposant ainsi des conseils et un accompagnement précieux. En plus de ses compétences techniques multiples, Thibaut est très à l'écoute, réactive, proactif, très bon communicant… Vous pouvez lui faire confiance les yeux fermés ! Merci Thibaut pour ton professionnalisme et ton expertise, c'est un réel plaisir de travailler avec toi.

Philippe Carne - hocklines.fr 16/02/2022

Google Avis
Un professionnel à votre écoute.

Pour notre asso sportive, nous avions besoin de revisiter notre site.
Tibow Webdesign a su nous accompagner du début à la fin de ce projet.

Une écoute active, une recherche de solutions, une connaissance des outils, de la réactivité, de l'adaptation, des conseils généraux sur la communication... Voilà pour l'essentiel des choses que Thibaut a su nous transmettre.

Nous en sommes au début... Mais le nouveau site a été vite adopté par notre public. Et de bonnes stats sont au rendez vous.

Aurore Grand 17 janvier 2022

Google Avis
J'ai vu un commentaire de Thibault sur une extension WordPress, qui ne fonctionnait pas sur mon site. Je l'ai donc contacté pour savoir si il pouvait m'aider. En moins d'une heure, il m'a répondu et il m'a gentiment aider. Un grand merci.

Charlotte Séjourné - Wildust.com 10 septembre 2021

Google Avis
Thibaut est une personne super disponible et très pro.
Chaque projet confié a été géré avec beaucoup de professionnalisme et pas mal de pédagogie pour les néophytes comme moi! C'est super appréciable.
Lire plus