Lire des informations sur query_reset_postdata
et query_reset_query
me rend confus. Par exemple:
Ci-dessus, vous ne devez utiliser que query_reset_postdata()
lorsque vous utilisez des "requêtes séparées". Dans exemple2, il y a un commentaire:
WP_Query( $args ) = wp_reset_postdata();
ET
query_posts ( $args ) = wp_reset_query();
Et vraiment, vous ne devriez jamais utiliser wp_reset_query
car vous ne devriez pas utiliser query_posts !?
Dans le WP Codex, il est indiqué que vous devez utiliser wp_reset_query()
après une boucle personnalisée (premier exemple) http://codex.wordpress.org/Function_Reference/wp_reset_query
Le codex a-t-il tort alors?
La différence entre les deux est que
wp_reset_query()
- s'assure que la requête principale a été réinitialisée à la requête principale d'originewp_reset_postdata()
- garantit que le $post
global a été restauré dans la publication actuelle dans la requête principale.En effet, en regardant le source _ vous verrez que le wp_reset_query()
appelle wp_reset_postdata()
. La seule différence entre les deux est alors cette ligne:
$GLOBALS['wp_query'] = $GLOBALS['wp_the_query'];
(dans wp_reset_query()
). Donc, wp_reset_query()
n'est nécessaire que si ces deux éléments globaux diffèrent, et cela ne se produit que si query_posts()
a été utilisé quelque part.
Tout simplement:
wp_reset_postdata()
- immédiatement après chaque coutume WP_Query()
wp_reset_query()
- immédiatement après chaque boucle utilisant query_posts()
Eh bien, oui, mais ce n’est nécessaire qu’après l’utilisation de query_posts()
. Comme vous l'avez indiqué, vous ne devez jamais utiliser query_posts()
. Donc, si vous n'utilisez jamais query_posts()
, alors il est non nécessaire d'appeler wp_reset_query()
(au lieu de wp_reset_postdata()
.
En bref, ce n'est pas que vous ne devriez pas utiliser wp_reset_query()
au lieu de wp_reset_postdata()
, c'est que vous ne devriez jamais en avoir besoin!