Dans certains cas, vous souhaiterez peut-être exclure certaines pages de votre site WordPress des résultats de recherche. Cela peut être utile pour des pages d’administration, des pages spécifiques ou des contenus sensibles que vous ne voulez pas que les utilisateurs trouvent en recherchant sur votre site.
Besoin d’un spécialiste WordPress pour votre projet ? Contactez-moi
Heureusement, WordPress offre une manière simple de personnaliser les résultats de recherche en filtrant certaines pages. Si vous souhaitez une solution plus flexible et sans avoir à modifier le code de votre site, vous pouvez télécharger un plugin sur mon site TD Plugin qui vous donnera une interface intégrée à votre WordPress.
Pourquoi exclure des pages des résultats de recherche ?
Exclure certaines pages des résultats de recherche peut améliorer l’expérience utilisateur en éliminant des résultats non pertinents. Cela peut également aider à protéger des informations sensibles ou à réduire le contenu que vous ne souhaitez pas rendre facilement accessible.
Utiliser le « crochet wordpress » (ou « hook ») : pre_get_posts
L’une des façons les plus simples d’exclure des pages spécifiques de la recherche WordPress est d’utiliser le hook pre_get_posts
. Ce hook permet de modifier la requête avant qu’elle ne soit exécutée, en filtrant ou en ajustant les résultats.
Voici un exemple de code pour exclure des pages de la recherche. Ce code doit être ajouté au fichier functions.php
de votre thème, ou dans un plugin personnalisé.
function td485_exclure_pages_recherche( $query ) {
if ( ! is_admin() && $query->is_search ) {
// Définir un tableau avec les slugs des pages à exclure
$slugs_a_exclure = array( 'slug-page-1', 'slug-page-2', 'slug-page-3' ); // Remplace par les slugs de tes pages
// Récupérer les pages correspondant aux slugs à exclure
$pages_a_exclure = array();
foreach ( $slugs_a_exclure as $slug ) {
$page = get_page_by_path( $slug ); // Récupère la page par son slug
if ( $page ) {
$pages_a_exclure[] = $page->ID; // Ajoute l'ID de la page au tableau
}
}
// Exclure ces pages de la recherche
if ( ! empty( $pages_a_exclure ) ) {
$query->set( 'post__not_in', $pages_a_exclure );
}
}
}
add_action( 'pre_get_posts', 'td485_exclure_pages_recherche' );
Explication du code
Vérification du type de requête : La condition ! is_admin() && $query->is_search
permet de s’assurer que le code ne s’exécute que lorsqu’une recherche est effectuée, et pas dans le tableau de bord de l’administration WordPress.
Définition des slugs à exclure :
Le tableau $slugs_a_exclure
contient les slugs des pages à exclure des résultats de recherche. Tu peux modifier ce tableau pour y ajouter ou retirer des slugs de pages.
Récupération des pages par leur slug :
La fonction get_page_by_path( $slug )
permet de récupérer un objet WP_Post
pour chaque slug. Si la page existe, son ID
est ajouté au tableau $pages_a_exclure
.
Exclusion des pages de la recherche :
Le tableau $pages_a_exclure
contient les IDs des pages que tu veux exclure. La ligne $query->set( 'post__not_in', $pages_a_exclure );
permet de modifier la requête de recherche pour exclure ces pages.
Hook pre_get_posts
: Le hook pre_get_posts
est utilisé pour modifier la requête de recherche avant qu’elle ne soit exécutée. Cela garantit que les pages exclues ne figureront pas dans les résultats.
Un mini-plugin pour faire ça ?
Si vous n’êtes pas à l’aise avec le developpement informatique et vous souhaitez une solution plus flexible et sans avoir à modifier le code informatique de votre site, un plugin pré-conçu avec une page d’options personnalisée peut être une solution idéale. Cela permet de gérer les exclusions via l’interface d’administration de votre WordPress, rendant le processus plus accessible même pour les utilisateurs non techniques.