Secondary Query
Définition : Secondary Query est une requête WordPress supplémentaire, distincte de la requête principale, généralement construite avec WP_Query. Elle sert à afficher une sélection de contenus sans modifier directement le contexte global de la page.
Terminologie
Appellation officielle : Secondary Query
Autres appellations : Requête secondaire, Requête WP_Query personnalisée
Comprendre le fonctionnement
Un thème ou une extension peut demander des contenus supplémentaires, par exemple les trois derniers articles d’une catégorie. Une nouvelle instance de WP_Query réalise alors une recherche selon ses propres paramètres. Cette requête conserve son état et sa liste de résultats sans remplacer, par principe, l’instance principale correspondant à l’URL.
Lorsqu’une boucle secondaire utilise the_post(), certaines données globales liées à la publication courante sont modifiées. Il faut ensuite appeler wp_reset_postdata() pour restaurer ce contexte, notamment avant de reprendre le rendu du template principal. Les requêtes secondaires répétées ou trop larges peuvent alourdir l’accès à la base et rendre le cache moins efficace.
Exemple concret
Une page d’accueil présente ses articles principaux et une liste séparée de contenus recommandés.
Exemple de code commenté
<?php
$liste = new WP_Query( array( 'post_type' => 'post', 'posts_per_page' => 3 ) );
if ( $liste->have_posts() ) {
while ( $liste->have_posts() ) {
$liste->the_post();
echo '<p>' . esc_html( get_the_title() ) . '</p>';
}
}
wp_reset_postdata(); // Restaurer le contexte du post principal.
Point technique à retenir
wp_reset_postdata() restaure les données globales liées au post ; elle ne supprime pas l’objet de requête.
Termes associés
- WP_Query
- Main Query
- wp_reset_postdata()
