web-dev-qa-db-fra.com

$ wp_query-> current_post redémarre à partir de zéro sur les pages paginées

Je sais comment suivre l'index de la publication actuelle lors de l'exécution de la boucle à l'aide de

$wp_query->current_post

Bu cela redémarre le compte à partir de zéro sur les pages paginées suivantes. Donc, si j'ai 20 articles et affiche 5 articles par page, les articles sont à nouveau numérotés de 0 à 4 au lieu de 5 à 9.

Ma question est la suivante: existe-t-il une méthode permettant d’obtenir l’index absolu lors de l’exécution de la boucle sur une page paginée ou dois-je calculer moi-même le décalage en utilisant des informations sur le numéro de page et les publications par page?

2
mikkelbreum

$wp_query->current_post contient des informations sur la publication en cours dans la boucle, pas un ensemble global de publications. Numéroter des articles sur plusieurs pages n’est pas disponible nativement (pour autant que je sache) et serait probablement trop peu fiable (par exemple, que se passe-t-il si le nombre d’affichages par page est personnalisé pour être inégal?).

Pour une mise en œuvre spécifique, la numérotation personnalisée basée sur le numéro de page est probablement une option.

En ce qui concerne les stickies, vous pouvez récupérer leur nombre avec quelque chose comme count( get_option('sticky_posts') ) et ajuster votre numérotation en conséquence.

3
Rarst

j'espère que quelqu'un fournira une meilleure réponse, mais pour l'instant je fais ceci:

// We're about top start The Loop.
// Setting up a counter to keep track of the posts being processed
// We can't just use current_post as it start from zero on subsequent paged pages.

$paged_no = ($wp_query->query_vars['paged'] < 2 ) ? 0 : $wp_query->query_vars['paged'] -1 ;
$current_offset = $paged_no * $wp_query->query_vars['posts_per_page'];

et ensuite dans la boucle:

$absolute_post_index = $wp_query->current_post+$current_offset+1;

Cela fonctionne quand il n'y a pas de messages collants. S'il y en a, ils seront collés sur la première page. Cela signifie que s'il y a 5 articles par page et un article collant, la première page affichera 6 articles et les pages suivantes 5. Dans ce scénario, la première page numérotera les publications de 0 à 5 et, à la deuxième page, les publications de 5 à 9, car la post-it n'est plus prise en compte. C'est un problème parce que cela signifie que le même index sera répété pour le dernier message de la page 1 et le premier message de la page 2.

2
mikkelbreum