Dans ce tutoriel, nous allons voir comment récupérer une liste de custom post type au sein d’un autre CTP en utilisant la taxonomie actuelle.
Si vous voulez créer une query au sein d’un post en utilisant sa catégorie, c’est par ici que ça se passe :)
Problématique
Le but ici est de créer une Query_post sur la page d’un Custom Post Type (CTP) qui va prendre en compte sa taxonomie actuelle.
À quoi ça sert ? Par exemple à récupérer les derniers articles publiés dans la même catégorie de votre blog, ou bien à afficher les produits de la même gamme :)
Solution
Tout d’abord, nous allons récupéré la liste des taxonomies du Custom Post Type :
$terms = wp_get_post_terms( $post->ID, 'ICI_LE_CUSTOM_VOCABULARY');
Ensuite, nous allons définir les arguments de la query :
$args = array(
'post_type' => 'produit', // le CTP
'showposts' => 3, // Nombre de post à montrer
'tax_query' => array(
array(
'taxonomy' => 'ICI_LE_CUSTOM_VOCABULARY', // le custom vocabulary des taxonomies
'field' => 'slug',
'terms' => array($terms[0]->slug), // prend le premier slug
),
),
);
Je crée maintenant la boucle, pour afficher le titre, l’extrait et le permalink de mes CTP :
<?php
query_posts( $args );
while ( have_posts() ) :
the_post(); ?>
<article>
<a href="<?php the_permalink(); ?>">
<?php the_title(); ?>
</a>
<?php the_extract(); ?>
</article>
<a href="<?php the_permalink(); ?>">
+ lire la suite
</a>
<?php endwhile;
wp_reset_query(); ?>
Aller plus loin, et retirer le CTP actuel de la boucle
Le soucis avec cette technique, c’est que votre CTP actuel se retrouve dans la Query. Nous allons donc ajouter une conditionnelle pour ne pas l’afficher.
Tout d’abord, nous allons récupérer l’ID du CTP :
Puis ajouter notre conditionnelle à la query :
<?php
query_posts( $args );
while ( have_posts() ) :
the_post();
if( $exclude != get_the_ID() ) { ?>
<article>
<a href="<?php the_permalink(); ?>">
<?php the_title(); ?>
</a>
<?php the_extract(); ?>
</article>
<a href="<?php the_permalink(); ?>">
+ lire la suite
</a>
<?php }
endwhile;
wp_reset_query(); ?>
Voilà le code complet :
<?php
// On récupère la liste des taxonomies du CTP
$terms = wp_get_post_terms( $post->ID, 'ICI_LE_CUSTOM_VOCABULARY');
// On récupère l'ID du CTP actuel
$exclude = get_the_ID();
// On défini les arguments de la query
$args = array(
'post_type' => 'produit', // le CTP
'showposts' => 3, // Nombre de post à montrer
'tax_query' => array(
array(
'taxonomy' => 'ICI_LE_CUSTOM_VOCABULARY', // le custom vocabulary des taxonomies
'field' => 'slug',
'terms' => array($terms[0]->slug), // prend le premier slug
),
),
);
// La query
query_posts( $args );
while ( have_posts() ) :
the_post();
if( $exclude != get_the_ID() ) { ?>
<article>
<a href="<?php the_permalink(); ?>">
<?php the_title(); ?>
</a>
<?php the_extract(); ?>
</article>
<a href="<?php the_permalink(); ?>">
+ lire la suite
</a>
<?php }
endwhile;
wp_reset_query();
?>
See ya’ space integrator
Summary
Article Name
Créer une boucle Query_posts utilisant la taxonomy d’un custom post type
Description
Dans ce tutoriel, nous allons voir comment récupérer une liste de custom post type au sein d’un autre CTP en utilisant la taxonomie actuelle.
Nicolas AUNE
AUNE Nicolas