Créer une boucle Query_posts utilisant la taxonomy d’un custom post type

Posté par PUShAUNE le 8 janvier 2020

0 commentaires :(

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 :

$exclude = get_the_ID();

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
Nicolas AUNE
PUShAUNE

Tu kiffes ? Alors partage avec tes potes !

Sois pas timide, lâche tes com’ !

Votre adresse de messagerie 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.