15 Août 2019

Exclure les pages de votre recherche WordPress

Vous avez peut-être déjà remarqué que dans la recherche WordPress, après une requête, les résultats affichent tous les éléments de votre site. Vous pouvez retrouver par exemple votre page de mentions légales dans les résultats de recherche ! Si vous utilisez le widget search que pour votre blog, voici un conseil pour éviter d’afficher les pages de votre site dans les résultats.

Il y a juste un bout de code à rajouter dans votre thème. Vous devez ouvrir le fichier function.php et y coller cela :

//Exclure les pages du widget recherche
	if (!is_admin()) {
	function wpb_search_filter($query) {
	if ($query->is_search) {
		$query->set('post_type', 'post');
	}
	return $query;
	}
	add_filter('pre_get_posts','wpb_search_filter');
	}

On vient de définir que seuls les posts seront recherchés dans le widget. Vous avez maintenant la possibilité d’avoir une recherche dédiée à votre blog WordPress avec des résultats cohérents.

Comment exclure les articles blog de la recherche wordpress ?

Le code ci-dessus fonctionne pour afficher uniquement les articles blog. Cependant vous pouvez faire l’inverse. Si sur votre site internet WordPress vous utilisez uniquement des pages alors l’idéal est d’avoir dans la recherche du site uniquement des pages en résultat.

La chose est très très simple. Dans le code, vous allez modifier le post_type en incluant « page ». Voici :

//Exclure les articles blog du widget recherche
	if (!is_admin()) {
	function wpb_search_filter($query) {
	if ($query->is_search) {
		$query->set('post_type', 'page');
	}
	return $query;
	}
	add_filter('pre_get_posts','wpb_search_filter');
	}

Et voilà tout est ok 🙂

Pour Woocommerce, je recommande une recherche un peu plus poussée avec par exemple ce plugin : https://yithemes.com/themes/plugins/yith-woocommerce-ajax-search/
Si vous voulez aller plus loin dans la recherche WordPress je vous laisse découvrir les plugins sur Code Canyon.

Laisser un commentaire

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