Disons que je fais une recherche sur mon site et que je reçois 50 posts à la suite. La pagination est définie à 10 messages par page, donc j'ai 5 pages de résultats.
Lorsque je suis sur la première page de résultats, si j'inspecte la var $posts
globale, elle me donne des données pour les 10 posts de la page de résultats actuelle uniquement.
Comment puis-je accéder aux données de TOUS les résultats, peu importe la page sur laquelle je suis?
L'ensemble du mécanisme de la boucle est basé sur le fait d'avoir un tableau filtré $ posts. En regardant dans la documentation sur les boucles sur plusieurs boucles , elle donne une explication du code PHP pour le code de boucle standard que vous utilisez:
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<!-- do stuff ... -->
<?php endwhile; ?>
<?php endif; ?>
Les options have_posts () et the_post () sont des wrappers de commodité autour de l'objet global $ wp_query, où se trouve toute l'action. La $ wp_query est appelée dans l'en-tête du blog et les arguments de requête alimentés entrant via GET et PATH_INFO. $ Wp_query prend les arguments, construit et exécute une requête en base de données qui génère un tableau de publications. Ce tableau est stocké dans l'objet et est également renvoyé à l'en-tête du blog où il est inséré dans le tableau global $ posts (pour la compatibilité avec les anciennes boucles de publication).
Have_posts () appelle simplement $ wp_query-> have_posts () qui vérifie un compteur de boucle pour voir s'il reste des publications dans le tableau post. Et the_post () appelle $ wp_query-> the_post () qui fait avancer le compteur de boucles et configure la variable globale $ post ainsi que toutes les données de publication globales. Une fois la boucle épuisée, have_posts () renvoie false et nous avons terminé.
Donc, le $ posts global est connecté à la fonction have_posts. Pour que cela fonctionne correctement, il ne peut contenir que la liste paginée des articles. Notez également que le tableau $ posts n’est là que pour la compatibilité ascendante, il est donc préférable de ne pas y accéder directement.
Il semble donc que vous deviez soit créer votre propre pagination, soit créer un objet séparé avec toutes les publications.
Je suggérerais ce dernier.