Pour améliorer votre blog/site, vous avez créé des Custom Post Type (avec ou sans Pods), c’est très bien.. si si je vous assure ! 😉
Maintenant, à moins que vous vouliez être le/la seul(e) à les voir (pourquoi pas ?), il va falloir les afficher non ?
Avant, je fonçais tête baissée (pas sur que ça aille plus vite mais bon…) dans le code du template pour modifier les « loop » de WordPress…
Mais ça c’était avant que je devienne pote avec Captain Hook ! 🙂
Oui, avant faire quoique se soit sous WordPress, pensez à regarder si un hook pourrait vous rendre service !
Et c’est bien sur le cas pour nos CPT…
Il s’agit du hook « pre_get_posts« , qui va nous permettre de reprendre la main, avant que WordPress ne lance sa requête.
add_filter( 'pre_get_posts', 'my_get_posts' ); function my_get_posts( $query ) { $query->set( 'post_type', array( 'post', 'livre' ) ); // livre is our Custom Post Type return $query; }
A noter que la fonction set nous permet de modifier n’importe quel paramètre de notre requête, pour plus de détails, reportez-vous à la classe WP_Query
Le problème avec ce code, c’est qu’il va modifier toutes les requêtes de votre site ! Il faut ajouter des restrictions à l’emploi de cette fonction.
ex: afficher les CPT uniquement sur la Home, et n’affecter que la requête principale (il peut y avoir plusieurs requêtes sur une même page !)
add_filter( 'pre_get_posts', 'my_get_posts' ); function my_get_posts( $query ) { if ( is_home() && $query->is_main_query() ) $query->set( 'post_type', array( 'post', 'livre' ) ); return $query; }
Pour ajouter nos CPT à notre flux RSS, on ajoutera la condition is_feed()… ( Conditional Tag)
Vous trouverez certainement une utilisation de ce hook… c’est une bombe non ?? 🙂
Bonjour Patrick,
Je repars dans mon projet d’utiliser des CPT. Et dans le cas de POds, j’ai trouvé un plugin qui le permet 🙂
https://wordpress.org/plugins/pods-frontier-auto-template/
Super simple et pratique à utiliser
a+
Salut Hervé, oui ce plugin est assez nouveau, il faut que je le regarde de plus près…