Améliorer l'affichage des résultats de recherche sur WordPress En cas d'absence de résultat, proposer à l'utilisateur de reformuler sa recherche

En cas d'absence de résultats à une recherche dans Wordpress, la solution la plus simple est d'afficher une petite phrase invitant à reformuler la recherche infructueuse. Mais vous n'êtes pas comme ça, vous allez proposer un nouveau formulaire de recherche à votre visiteur, en plus de cette phrase compatissante !

C'est là que vous vous dites "WordPress prévoit la chose avec le fonction get_search_form(), il n'y a plus qu'à?". Et je vous dis oui, c'est exactement ça... dans le cas simple où vous n'avez pas déjà un formulaire de recherche dans un coin de votre site par exemple.

En effet si vous dupliquez simplement votre formulaire contenu dans le fichier searchform.php (qui contient normalement la structure du formulaire de recherche), vous risquez de vous retrouver avec deux formulaires porteurs du même id.

L'astuce se découpe quelques points :

 dupliquer searchform.php
 renommer le fichier searchform-new.php (le tiret+slug est important)
 éditez votre fichier en changeant les valeurs de for du <label> et les différents id
 n'oubliez pas d'enregistrer vos modifications

Il suffira ensuite d'utiliser la fonction WordPress get_template_part() :

 <p>Navré mais votre recherche semble infructueuse.<br />Vous
pouvez toujours retenter votre chance avec de nouveaux termes
;)</p>
<?php
 // Affiche le contenu du fichier searchform-new.php
 get_template_part( 'searchform', 'new' );
?>


Et voilà, l'affichage est terminé pour le cas où nous aurions aucun résultat lors d'une recherche.


Affichage de la pagination

Il ne reste plus qu'à afficher la pagination en dehors de la boucle, juste après endwhile; avant else:.

 echo '<ul class="pagination"> 
   <li class="prev_link"><?php previous_posts_link('&laquo; Résultats précédents') ?></li>
   <li class="nex_link"><?php next_posts_link('Résultats suivants &raquo;','') ?></li>
</ul>';