Obter contagem de postagens do loop atual ao usar várias consultas em uma página


10

Estou tentando obter uma contagem das postagens atuais dentro de um loop. Estou usando vários loops em uma página no meu tema. Até agora eu tenho:

$my_post_count = $wp_query->post_count;

Mas quando imprimo $ my_post_count, ele retorna o número de todas as postagens no meu site WP. Poderia ter algo a ver com o uso de várias consultas em uma página? Tentei usar wp_reset_query após cada loop para garantir que eu não estivesse jogando coisas dessa maneira. O que estou fazendo de errado?

Respostas:


29

$wp_query mantenha o loop principal da página e não deve ser usado para criar vários loops.

Se você estiver usando um novo WP_Queryobjeto, sua variável que o contém terá a seguinte contagem:

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

Se você estiver usando get_posts(), o WP_Queryobjeto não estará acessível e você deve apenas contar o conjunto retornado:

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

Nota: Se você estiver no loop principal, você pode acessar WP_Queryatravés deglobal $wp_query
mrmadhat

5

Acredito que o post_count esteja armazenado no global, portanto, antes do loop personalizado, você deve defini-lo 0, pois você pode usá-lo fora do loop, mas isso depende de como você está estruturando suas consultas múltiplas, talvez você possa adicioná-las à sua postagem ?

Existe outra maneira que eu uso no loop que conta postagens usando current_post + 1, por exemplo.

<?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

Uma solução alternativa usando WP_Query seria:

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

0

Maneira simples de contar o total de postagens, incluindo paginação

<?php  global $wp_query
   echo $wp_query->found_posts; ?>
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.