Je ne suis pas capable de comprendre l'utilisation de wp_reset_postdata. qu'est-ce qui pourrait mal tourner si je ne l'utilise pas?
https://codex.wordpress.org/Function_Reference/wp_reset_postdata
Ici, dans la documentation, qu'est-ce qu'une requête principale et une requête secondaire?
Merci
WordPress utilise la variable globale $post
. De cette façon, vous n'avez pas à passer post ni id_ID en tant que paramètre pour les fonctions. Vous pouvez donc appeler the_title()
et WP sait quel titre doit apparaître.
Ce comportement fonctionne bien s'il n'y a qu'une seule boucle sur le site. Mais si vous créez vos propres boucles personnalisées et les itérez, vous modifiez la variable globale $post
...
Regardons un échantillon. Disons qu'il s'agit de single.php pour l'article "News 01":
...
while ( have_posts() ) : the_post();
?>
<h1><?php the_title(); // it will show News 01 ?></h1>
<?php the_content(); // it will show its content ?>
<?php
$related = new WP_Query( ... );
while ( $related->have_posts() ) : $related->the_post();
?>
<article>
<h2><?php the_title(); // it will show other title ?></h2>
</article>
<?php endwhile; ?>
<?php the_category(); // what will that show? categories for which post? ?>
Dans la dernière ligne, il affichera les catégories du dernier des postes liés. Pourquoi? Car il s’agit de la publication sur laquelle la variable globale $post
est définie.
Mais si vous appelez wp_reset_postdata();
après endwhile
, vous redéfinirez $post
global à la publication à partir de l'objet $wp_query
global, de sorte que tout fonctionnera à nouveau correctement.