filtre résultats de recherche par catégorie wordpress

Dans ce tuto, nous allons voir comment ajouter un filtre dans le formulaire de recherche et permettre de rechercher un mot dans une catégorie précise ou sur l’ensemble des catégories sans utiliser de plugin. Cette fonction est particulièrement agréable pour tous les sites utilisant des termes communs à plusieurs catégories. Par exemple, un site de recettes de cuisine utilisent plusieurs catégories pour classer ses plats, il y a forcément des ingrédients qui sont utilisés pour les desserts et les entrées. Si on tape le mot beurre par exemple, wordpress affichera logiquement toutes les recettes contenant cet ingrédient  mais comment faire si on veut uniquement trouver les recettes de la catégorie desserts contenant du beurre ? C’est tout le rôle de cette petite fonction qui permettre d’indiquer dans le formulaire de recherche soit une catégorie précise soit de rechercher dans toutes les catégories grâce à un menu déroulant (appelé également menu dropdown).

Lire aussi :  Créer une galerie photo wordpress
filtre de recherche par catégorie sans plugin

 

Filtrer les résultats de recherche

Ouvrez le fichier searchform.php qui se trouve dans le dossier de votre thème et remplacez son code par celui-ci

<form role="search" method="get" id="searchform" action="<?php bloginfo('siteurl'); ?>">
<div>
<label class="screen-reader-text" for="s">Search for:</label>
<input type="text" value="" name="s" id="s" />
in <?php wp_dropdown_categories( 'show_option_all=All Categories' ); ?>
<input type="submit" id="searchsubmit" value="Search" />
</div>
</form>

Ce code indique à wordpress qu’il faut chercher le mot dans le paramètre de catégorie utilisé

Enregistrez-le et retournez sur votre site, vous pouvez maintenant voir que la barre de recherche affiche les catégories d’articles permettant de filtrer la recherche. Comme d’habitude, cette modification doit se faire sur un thème enfant sous peine de la voir disparaître à la prochaine mise à jour

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *