Vous êtes-vous déjà demandé comment limiter vos résultats de recherche à des types de publication spécifiques ? Ce n'est pas très difficile. Nous vous avons déjà montré comment désactiver la fonction de recherche dans WordPress en modifiant le fichier functions.php. Maintenant, nous allons faire la même chose, sauf pour filtrer nos résultats de recherche.
Ouvrez votre fichier functions.php et ajoutez le code suivant :
function searchfilter($query) {
if ($query->is_search && !is_admin() ) {
$query->set('post_type',array('post','page'));
}
return $query;
}
add_filter('pre_get_posts','searchfilter');
Remarquez la ligne qui dit
$query->set('post_type',array('post','page'));
Vous pouvez filtrer les résultats de recherche en modifiant les valeurs de la variable tableau. Actuellement, elle est définie pour afficher les articles et les pages, mais vous pouvez la modifier pour afficher ce que vous voulez.

Ankit manandgar
comment puis-je obtenir des résultats de recherche uniquement par titre de publication ?
Anna
Merci pour ce code – il a fonctionné, bien que vous l'ayez mis à jour pour la dernière fois en 2013 ! Mon thème utilise également une recherche instantanée et j'aimerais limiter les résultats là aussi. Comment pourrais-je faire ?
Sparsh Goyal
Mon thème actuel affiche les articles avec quelques lignes de départ pour le terme/mot recherché. Je veux le personnaliser pour afficher ce paragraphe contenant le terme/mot recherché dans l'extrait de l'article. En d'autres termes, je veux afficher le texte pertinent dans l'extrait de l'article et non le paragraphe de départ dans les résultats de recherche. Quelqu'un peut-il m'aider à faire cela....
Azamat
Bonjour,
Comment puis-je limiter les résultats de recherche pour des types de publication spécifiques ET des termes de taxonomie personnalisée spécifiques ?
Steven
J'ai une fonction simple dans le fichier functions.php de mon thème, qui ne devrait filtrer que les articles par un terme de recherche... lorsque je recherche quelque chose maintenant, l'erreur HTTP 500 « Le site Web ne peut pas afficher la page » apparaît. Quelqu'un a une idée de ce qui ne va pas avec ma fonction ?
function searchFilter($query) { if ($query->is_search) { wp_reset_query(); $args = array ( ‘s’ => $_GET[‘s’] ); query_posts( $args ); } } add_filter(‘pre_get_posts’, ‘searchFilter’);
Greg
Ceci restreint tous les formulaires de recherche au type de publication personnalisé – y compris mon formulaire de recherche dans la barre latérale, qui doit renvoyer tous les résultats. Ceci fonctionne pour moi :
function searchfilter($query) { if ($query->is_search && !is_admin() ) { if(isset($_GET[‘post_type’])) { $type = $_GET[‘post_type’]; if($type == ‘book’) { $query->set(‘post_type’,array(‘book’)); } } } return $query; } add_filter(‘pre_get_posts’,’searchfilter’);
Jonathan Joosten
Merci pour votre aide, j'ai amélioré votre code pour que les gens ne puissent rechercher que les types de publication autorisés.
function searchfilter($query) { if ($query->is_search && !is_admin() ) { if(isset($_GET[‘post_type’])) { $types = (array) $_GET[‘post_type’]; $allowed_types = get_post_types(array(‘public’ => true, ‘exclude_from_search’ => false)); foreach($types as $type) { if( in_array( $type, $allowed_types ) ) { $filter_type[] = $type; } } if(count($filter_type)) { $query->set(‘post_type’,$filter_type); } } } } add_filter(‘pre_get_posts’,’searchfilter’);
Dan Sz.
Comment cela est-il implémenté ? Si je lis correctement le commentaire de Greg, nous voulons un seul formulaire limité à un type de publication, tout en conservant la recherche par défaut intacte pour les autres zones du site.
Je demande car un site sur lequel je travaille a besoin d'une « Bibliothèque de ressources » consultable, que j'aimerais construire sans compromettre la fonctionnalité de recherche normale.
Tadeu
Bonjour, est-il possible de limiter la recherche uniquement au titre, à la catégorie et aux tags des articles ?
Sandeep
Bonjour,
Je ne suis pas en mesure de restreindre les pages dans le filtre de recherche.
J'ai juste besoin de la recherche dans les articles et non dans les pages.
$query->set(‘post_type’,array(‘post’));
Cela affiche aussi les pages.
Jared
Juste une note pour ajouter à cela, vous n'avez pas besoin de retourner $query.
http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts
Peter
Merci pour le super conseil !
L'équipe de WPBeginner
Nick La fonctionnalité de recherche de WordPress n'est pas très performante pour trouver du contenu.
Nick
J'ai utilisé ce code pour restreindre mes résultats de recherche aux Pages, pas aux Articles. Cela a fonctionné à cet égard, cependant, il semble qu'il ne recherche que les noms des Pages par opposition au contenu. Par exemple, si un utilisateur recherche « prix », la page « Prix » sera un résultat, mais s'il recherche « coût » ou « dépense » (qui sont tous deux des mots sur la page des prix), rien n'est trouvé. Y a-t-il un extrait de code qui me manque ?
emre
Hi,
I have a question and I couldn’t get a solution since last month.
I have lost of categories, pages and re-directions in my blog so my search box finds many unnecessary results when you try to search something. I want to customize my search.php for only categories part. In other words, we you search something, the results should be only from categories sections. So I will be get rid of redundant & duplicated results. My current codes are as below…Please help me
sam
Comment limiter par catégorie spécifique ? merci
Support WPBeginner
Sam, veuillez consulter notre guide sur la façon d'ajouter un filtre de recherche par taxonomie dans WordPress.
Admin
Hasan Gad Allah
Thank you , i was looking for that code (Y)
Felix
Il y a un problème avec votre extrait :
Il limite les résultats de recherche dans le backend, vous devriez l'encapsuler avec :
if ( !is_admin() ) {
// snippet
}
bloggingfuture
C'est un code assez précieux pour WordPress. Merci !
Alan Hughes
Alors, comment appliqueriez-vous cela à une barre de recherche spécifique ? Cela n'appliquerait pas le filtre à toutes les barres de recherche de votre site, n'est-ce pas ?
goJohnnyGo
Avez-vous trouvé comment appliquer cela à des barres de recherche spécifiques (pas universellement) ?
Personnel éditorial
Oui, nous avons un article ici :
https://www.wpbeginner.com/wp-tutorials/how-to-create-advanced-search-form-in-wordpress-for-custom-post-types/
Admin
scotte_sprott
Comment puis-je limiter les résultats de recherche pour n'afficher que les pages ?
wpbeginner
@scotte_sprott Dans le tableau, gardez seulement 'page' et supprimez 'posts'.