WordPress: Exclure des pages / articles de la recherche
Si, dans WordPress, vous vous demandez comment exclure des pages / articles de la recherche, voici la réponse.
De base WordPress propose une recherche sur l’ensemble des posts du site : post simple, page, type de page personnalisé … Pour supprimer, exclure ou retirer des éléments de la recherche, voici comment procéder.
Ajoutez cette fonction dans le fichier functions.php de votre thème.
// search filter
function my_search_filter( $query )
{
if ( $query->is_search )
{
$query->set( 'post__not_in',array( 12, 23, 65 ) );
}
return $query;
}
add_filter('pre_get_posts','my_search_filter');
$query->set( );
permet d’exécuter une requête avec des valeurs en paramètres.
Dans l’exemple ci-dessus, je demande de rechercher les posts dont l’identifiant n’est pas 12, 23 ou 65 : post__not_in
Pour exclure une catégorie, mettre category__not_in et en valeur les identifiants de catégorie.
Restreindre la recherche
Au contraire pour limiter la recherche à une liste de catégorie ou de post, supprimez not_ de la requête.
Bonjour,
Merci beaucoup pour vos astuces bien utiles.
Toute fois, bien qu’elles marchent sur mon site, elles marchent également dans la partie administration du site. Ainsi j’ai bien limité ma recherche à une seule catégorie, mais cela a limité également la barre de recherche de l’administration à cette catégorie.
Comment limiter uniquement la recherche public et non celle de l’administration?
Cordialement JC
Jean-Claude, voici la solution :
https://gist.github.com/thierrypigot/727460d160ef43a027d9
Je voulais simplement vous remercier à nouveau pour ce site Web étonnant que vous avez fait ici. Il est plein d’idées pour ceux qui sont sérieusement intéressés par ce sujet, plus précisément cet article très instructif.
Merci le spécialiste wordpress 😉
Super utile et simple à mettre en place.
Perso, j’ai malheureusement un conflit avec un plugin en place… Ah les vilains plugins…
Merci pour le code.
Très utile si on veut soulager la requête, ça tourne très bien merci 🙂 !
bonjour,
je cherche desespérement à limiter ma fonction de recherche aux seuls titres et je ne trouve pas la solution (je débute sur wp il faut dire). savez vous comment faire , pour l’instant le code que j’ai installé est :
<form method="get" id="searchform" action="/ »>
<input type="text" value=" » name= »s » id= »s » />
Salut,
Si c’est pour limiter la fonction de recherche, ajoute ce code dans le fichier functions.php de ton théme:
add_filter(‘posts_where’, ‘limit_search_where_to_title’ );
function limit_search_where_to_title( $where )
{
global $wpdb;
if( is_search() ) {
$where = « AND `post_status` = ‘publish’ AND `post_title` LIKE ‘% ». mysql_real_escape_string( $_GET[‘s’] ) . »%' »;
}
return $where;
}
Si c’est pour limiter l’affichage des resultats, Il faut regarder si dans ton dossier de thèmes WordPress il y a un fichier search.php
Si il existe, il faut modifier le code qui se trouve entre le et
C’est a cet endroit que se trouve le code qui permet d’afficher les informations de l’article.
Si le fichier search.php n’existe pas, le plus simple est de recopier le fichier index.php et de le renommer search.php. En suite effectuer les modifications précédemment exposées.
Ne pas hésiter si tu as besoin de plus d’informations.
@+
Thierry
Bonjour,
Ce code fonctionne parfaitement. Cependant comment ajouter à ce dernier une recherche également dans les extraits (post_excerpt) svp ?
Cdt,
Stef
Bonsoir Stéphane,
Voici le code à ajouter dans le fichier functions.php de votre thème pour limiter la recherche au titre ou à l’extrait :
Thierry