Ajouter des Custom Post Type à la Main Query principale de WordPress

Posté par PUShAUNE le 15 mars 2023

0 commentaires :(

Il est parfois utile d’ajouter des Custom Post Type aux page de catégories des articles. Je vous partage ici un Snippet capable de faire ça.

Problématique liée à la Query principale de WordPress

La Query principale de WordPress sert à afficher les posts (articles) dans les page de type :

  • catégorie,
  • archive,
  • auteur,
  • archive.

Seulement, ces pages filtre les posts en entrée et n’affichent que les posts originaires de WordPress. Si vous utilisez un ou plusieurs custom post type, ils n’apparaîtront pas sur les pages de catégories.
Il vous faudra alors créer des pages de taxonomie (ou créer une Query spécifique) pour les voir en front.

Dans certains cas, il peut être utile d’afficher les CTP dans la Query principale (et donc dans les catégories, archives, …). Nous allons voir comment faire ça.

Détail du snippet

Nous allons créer une nouvelle fonction dans le fichier function.php :

function push_add_ctp($query){

}
add_action('pre_get_posts', 'push_add_ctp', 10, 1);

Ensuite, nous allons cibler les Main Query tout en évitant celles présente dans le back office :

$is_target_query = 
!is_admin() &&
$query->is_main_query() &&
($query->is_date ||
$query->is_author ||
$query->is_category ||
$query->is_tag ||
$query->is_tax);

Enfin, nous allons y ajouter nos CTP :

if($is_target_query){
$target_types = array('post', 'XXXX', 'XXXX', 'XXXX');
$query->set('post_type', $target_types);
}

N’oubliez pas de laisser post sans quoi vos articles disparaîtront de vos catégories !

Snippet complet à ajouter à votre function.php

function push_add_ctp($query){

$is_target_query =
!is_admin() &&
$query->is_main_query() &&
($query->is_date ||
$query->is_author ||
$query->is_category ||
$query->is_tag ||
$query->is_tax);

if($is_target_query){
$target_types = array('post', 'XXXX', 'XXXX', 'XXXX');
$query->set('post_type', $target_types);
}
}
add_action('pre_get_posts', 'push_add_ctp', 10, 1);

Voilà le snippet complet à coller dans votre thème. N’oubliez pas de remplacer XXXX par vos Custom Post Type.

See ya’ space integrator

Tu kiffes ? Alors partage avec tes potes !

Sois pas timide, lâche tes com’ !

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.