WordPress : Navigation personnalisée entre les articles

Wordpress - Tutoriel - navigation-personnalisée-entre-articles
WordPress Lecture 4 minutes • 25 avril 2015

La solution suivante va vous permettre d'afficher les liens d'article suivant & précédent de manière plus poussée.

Grâce à ce code vous allez pouvoir :
- Afficher les titres des articles au lieu du traditionnel "Article précédent" | "Article suivant".
- Choisir d'appeler uniquement des articles de la même catégorie, ou bien de toutes les catégories.
- Construire une structure HTML personnalisée.
- Conserver et ajouter des classes CSS afin de créer votre mise en forme sur-mesure.
 
Vous pouvez obtenir un rendu de ce type par exemple :
navigation-article-lab
 
 
Passons maintenant aux choses sérieuses.
Le code est à insérer dans votre fichier de template d'article perso (aussi nommé Custom Post Type) ou par défaut dans le fichier single.php
Si vous utilisez un thème WordPress par défaut, il vous faut trouver ce bout de code dans le fichier :
[pastacode lang="php" manual="%3Cdiv%20class%3D%22nav-previous%22%3E%3C%3Fphp%20previous_post_link(%20'%25link'%2C%20'%3Cspan%20class%3D%22meta-nav%22%3E'%20.%20_x(%20'%26larr%3B'%2C%20'Previous%20post%20link'%2C%20'twentyten'%20)%20.%20'%3C%2Fspan%3E%20%25title'%20)%3B%20%3F%3E%3C%2Fdiv%3E%0A%0A%3Cdiv%20class%3D%22nav-next%22%3E%3C%3Fphp%20next_post_link(%20'%25link'%2C%20'%25title%20%3Cspan%20class%3D%22meta-nav%22%3E'%20.%20_x(%20'%26rarr%3B'%2C%20'Next%20post%20link'%2C%20'twentyten'%20)%20.%20'%3C%2Fspan%3E'%20)%3B%20%3F%3E%3C%2Fdiv%3E" message="" highlight="" provider="manual"/]
 
et le remplacer par le code que je vous livre maintenant :
[pastacode lang="php" manual="%3C%3Fphp%0A%24prev_post%20%3D%20get_previous_post('true')%3B%0Aif(%24prev_post)%20%7B%0A%24prev_title%20%3D%20strip_tags(str_replace('%22'%2C%20''%2C%20%24prev_post-%3Epost_title))%3B%0Aecho%20%22%5Ct%22%20.%20'%3Ca%20rel%3D%22prev%22%20href%3D%22'%20.%20get_permalink(%24prev_post-%3EID)%20.%20'%22%20title%3D%22'%20.%20%24prev_title.%20'%22%20class%3D%22article-precedent%22%3E%3Cspan%20class%3D%22icone%22%3E%26laquo%3B%3C%2Fspan%3E%3Ch4%3E'.%20%24prev_title%20.%20'%26quot%3B%3C%2Fh4%3E%3C%2Fa%3E'%20.%20%22%5Cn%22%3B%0A%7D%0A%0A%24next_post%20%3D%20get_next_post('true')%3B%0Aif(%24next_post)%20%7B%0A%24next_title%20%3D%20strip_tags(str_replace('%22'%2C%20''%2C%20%24next_post-%3Epost_title))%3B%0Aecho%20%22%5Ct%22%20.%20'%3Ca%20rel%3D%22next%22%20href%3D%22'%20.%20get_permalink(%24next_post-%3EID)%20.%20'%22%20title%3D%22'%20.%20%24next_title.%20'%22%20class%3D%22article-suivant%22%3E%3Cspan%20class%3D%22icone%22%3E%26raquo%3B%3C%2Fspan%3E%3Ch4%3E'.%20%24next_title%20.%20'%26quot%3B%3C%2Fh4%3E%3C%2Fa%3E'%20.%20%22%5Cn%22%3B%0A%7D%0A%3F%3E" message="" highlight="" provider="manual"/]
Essayons à présent de comprendre ce petit bout de code magique.

"get_previous_post('true');" et "get_next_post('true');"

Ils vont respectivement appeler l'article précédent et l'article suivant.
Si vous choisissez 'true', alors vous afficherez uniquement des articles de la même catégorie.
Si vous souhaitez que tous les articles soient pris en compte peu importe leur catégorie, écrivez 'false'.
 

<span>

La balise span sert ici à appeler les petits icônes de navigation.
"&laquo;" vous donnera "<<"
"&raquo;" vous donnera ">>"
Vous êtes libres de donner une classe ou un id au span afin de la personnaliser voir même d'appeler vos propres icônes ou images.
 

<h4>

Dans l'exemple, j'ai choisi de placer les titres des articles appelés dans une balise <h4>. Vous pouvez choisir la balise qui vous arrange le plus ou même ne pas en utiliser.
 

ÉDIT AVRIL 2020

Ce code plus simpliste fait également le job !
[pastacode lang="php" manual="%3C%3Fphp%20previous_post_link('%26laquo%3B%20%25link'%2C%20'%25title'%2C%20TRUE)%3B%20%3F%3E%0A%3C%3Fphp%20next_post_link('%26laquo%3B%20%25link'%2C%20'%25title'%2C%20TRUE)%3B%20%3F%3E" message="Afficher la pagination " highlight="" provider="manual"/]
Si vous choisissez ‘true’, alors vous afficherez uniquement des articles de la même catégorie.
Si vous souhaitez que tous les articles soient pris en compte peu importe leur catégorie, écrivez ‘false’.
 
[pastacode lang="php" manual="%3C%3Fphp%20next_post_link('%26laquo%3B%20%25link'%2C%20'%25title'%2C%20FALSE%2C%20'17')%3B%20%3F%3E" message="Exclure une catégorie" highlight="" provider="manual"/]
Pour exclure une catégorie en particulier, il faut le préciser en écrivant "FALSE" puis l'identifiant de la catégorie à exclure (ici 17).


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