Récemment, nous vous avons montré comment limiter les résultats de recherche pour des types de publication spécifiques dans WordPress. Nous allons maintenant vous montrer comment vous pouvez créer des formulaires de recherche différents/multiples. De cette façon, chaque formulaire peut être limité à la recherche d’un type de publication spécifique. Bien que ce ne soit pas très difficile, vous devrez avoir une compréhension de base des modèles WordPress.
Tout d’abord, vous aurez besoin de certains formulaires de recherche. Placez le code suivant où vous voulez qu’il soit dans votre blog :
<form method="get" id="searchform" action="<?php bloginfo('home'); ?>/"> <input type="text" value="" name="s" id="s" /> <input type="hidden" name="search-type" value="normal" /> <input name="submit" type="submit" value="Go" /> </form>
Afin de spécifier le type de recherche que ce formulaire effectuera, modifiez simplement la valeur du champ masqué. Pour le moment, il est réglé sur « normal », mais cela peut être tout ce que vous voulez. Ensuite, nous devons modifier le fichier search.php. Ouvrez-le et remplacez tout ce qu’il contient par ce code (copiez d’abord le code existant dans votre presse-papiers, vous en aurez besoin dans une minute) :
<?php if(isset($_GET['search-type'])) { $type = $_GET['search-type']; if($type == 'random') { load_template(TEMPLATEPATH . '/normal-search.php'); } elseif($type == 'books') { load_template(TEMPLATEPATH . '/books-search.php'); } } ?>
Nous supposerons donc que vous avez deux formulaires de recherche, normal et livres. Ce code redirige simplement la recherche vers le fichier php qui gère cette requête spécifique. Il ne nous reste plus qu’à créer ces fichiers. Alors, allez-y et créez un fichier normal-search.php et books-search.php (remplacez simplement « normal » et « books » par les valeurs que vous avez utilisées).
Maintenant, dans normal-search.php, copiez et collez le code suivant :
$args = array( 'post_type' => 'post' ); $args = array_merge( $args, $wp_query->query ); query_posts( $args );
Immédiatement après cela, collez le code de boucle de votre presse-papiers que vous avez copié à partir du fichier search.php. Ensemble, ce code recherchera uniquement vos articles de blog normaux. Maintenant, dans le fichier books-search.php ajoutez ce morceau de code et collez à nouveau la boucle juste après :
$args = array( 'post_type' => 'books' ); $args = array_merge( $args, $wp_query->query ); query_posts( $args );
Cela amènera WordPress à rechercher uniquement le type de publication personnalisé de «livres». Vous pouvez répéter ce processus pour autant de formulaires de recherche que vous le souhaitez.