Ermitteln Sie die Anzahl der Beiträge der aktuellen Schleife, wenn Sie mehrere Abfragen auf einer Seite verwenden


10

Ich versuche, die aktuellen Beiträge innerhalb einer Schleife zu zählen. Ich verwende mehrere Schleifen auf einer Seite in meinem Thema. Bisher habe ich:

$my_post_count = $wp_query->post_count;

Wenn ich jedoch $ my_post_count drucke, wird die Nummer aller Beiträge auf meiner WP-Site zurückgegeben. Könnte es etwas mit der Verwendung mehrerer Abfragen auf einer Seite zu tun haben? Ich habe versucht, nach jeder Schleife wp_reset_query zu verwenden, um sicherzustellen, dass ich die Dinge nicht auf diese Weise wegwerfe. Was mache ich falsch?

Antworten:


28

$wp_query Halten Sie die Hauptschleife der Seite gedrückt und sollten Sie nicht zum Erstellen mehrerer Schleifen verwenden.

Wenn Sie ein neues WP_QueryObjekt verwenden, hat Ihre Variable, die es enthält, die folgende Anzahl:

$my_query = new WP_Query();
// stuff
$count = $my_query->post_count;

Wenn Sie verwenden, get_posts()ist das WP_QueryObjekt nicht zugänglich und Sie sollten nur den zurückgegebenen Satz zählen:

$posts = get_posts();
$count = count($posts);

Hinweis: Wenn Sie in der Hauptschleife sind, können Sie WP_Querydurchglobal $wp_query
mrmadhat

5

Ich glaube, dass post_count im globalen Speicher gespeichert ist. Daher sollten Sie es vor der benutzerdefinierten Schleife festlegen 0, da Sie es außerhalb der Schleife verwenden können. Dies hängt jedoch davon ab, wie Sie Ihre mehreren Abfragen strukturieren. Vielleicht können Sie sie Ihrem Beitrag hinzufügen ?

Es gibt eine andere Möglichkeit, die ich innerhalb der Schleife verwende current_post + 1, um beispielsweise Beiträge zu zählen.

<?php $my_query = new WP_Query();?>
     <?php if ($my_query->have_posts()) :while ($my_query->have_posts()) : $my_query->the_post();

           $count_posts = $my_query->current_post + 1; //counts posts in loop

     endwhile;?>

2

Eine alternative Lösung mit WP_Query wäre:

           <?php 
               $args = array(
               'post_type' => 'post'
               );
            $the_query = new WP_Query( $args );
            $totalpost = $the_query->found_posts; 
            ?> 

0

Einfache Methode, um den gesamten Beitrag einschließlich Pagignation zu zählen

<?php  global $wp_query
   echo $wp_query->found_posts; ?>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.