Comment inclure uniquement les articles dans les résultats de recherche de WordPress ?

mars 2020

Quentin

Le moteur de recherche de WordPress est bien pratique ! Il permet aux utilisateurs de chercher des termes sur l’ensemble du site : articles et pages.

Mais si vous voulez seulement afficher les résultats des articles et pas des pages, comment faire ?

WordPress dispose d’un filtre pour cela !

Voici ce que vous pouvez ajouter dans le fichier « functions.php » :

function search_only_posts($query){
  if(!is_admin() && $query->is_main_query()){
    if ($query->is_search){
      $query->set('post_type', ['post']);
    }
  }
}
add_action('pre_get_posts', 'search_only_posts');

Le filtre « pre_get_posts » permet de modifier la requête permettant de récupérer les posts. Ici, on vérifie si la requête a lieu ailleurs que dans la partie administration du site (avec la condition « !is_admin ») puis on vérifie si la requête en cours est la requête principale (grâce à la fonction « is_main_query() »).

Ensuite, on vérifie si la requête est réalisée dans le cadre d’une recherche (« $query->is_search »).

Si c’est le cas, on modifie la requête pour ne récupérer que les articles (post = article).

PS: n'oubliez pas de lire mon tutoriel principal sur comment créer un thème WordPress !

Laisser un commentaire

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