Contando as postagens de um loop personalizado do Wordpress (WP_Query)?

41

Eu tentei colocar isso:

    <?php $count = count($custom_posts); ?>
    <h2><?php echo $count; ?></h2>

no final do loop:

      <?php if ( bbp_get_forum_title() == 'Test Forum 1' ) : ?>
            <?php $custom_posts = new WP_Query(); ?>
            <?php $custom_posts->query('post_type=blocks&location=Business and Finance&order=DESC'); ?>
            <?php while ($custom_posts->have_posts()) : $custom_posts->the_post(); ?>
                <div class="ad">
                    <?php the_content(); ?>
                </div>
                <?php $count = count($custom_posts); ?>
                <h2><?php echo $count; ?></h2>
            <?php endwhile; ?>
      <?php endif; ?>

Mas em vez do total de postagens, recebo esta saída:

Tradução 1

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut Wisi Enim 1

Alguma sugestão para corrigir isso?

janoChen
fonte

Respostas:

74

A maneira correta de obter o número total de postagens é:

<?php $count = $custom_posts->found_posts; ?>

http://codex.wordpress.org/Class_Reference/WP_Query#Properties

Edit: reconhecendo a resposta de @Kresimir Pendic como provavelmente correta. post_counté a contagem de postagens para essa página específica, enquanto found_postsé a contagem de todas as postagens disponíveis que atendem aos requisitos da consulta sem paginação. Obrigado pela correção.

Manny Fleurmond
fonte
Obrigado! Ei, uma última pergunta. Como posso usar esse número para fazer uma declaração if que está fora desse loop (antes do loop). Porque parece que o número é exibido apenas quando coloco a variável após esse loop.
precisa saber é o seguinte
4
Você pode colocar o $ count = $ custom_posts-> post_count logo após a $ custom_posts-> query (). Observe que $ custom_posts-> post_count apenas fornece o número de resultados nessa 'página' do conjunto de resultados. Se você precisar obter o número total de resultados no conjunto de resultados 'inteiro', use $ custom_posts-> found_posts.
Robert Durgin
2
Esta resposta provavelmente não está correta para a maioria das situações. Use found_posts (todas as postagens encontradas) em vez de post_count (número de postagens a serem exibidas nesta página). Este comentário é redundante, logicamente falando, mas não socialmente.
Herbert Van-Vliet
11
Esta resposta está incorreta. $custom_posts->post_countretornará a quantidade de postagens mostradas nesta página; portanto, será exibido o posts_per_pagevalor da consulta ou um valor menor se o valor restante a ser exibido for menor. a resposta correta deve ser <@kresimir-pendic>a resposta de que usos$custom_posts->found_posts
Infinity Media
42

Manny vinculou a página de documentação correta, mas post_countestá errado. Para obter o número total de WP_Queryretornos de postagens, use "found_posts"

<?php

// The Query
$query = new WP_Query( $args );
$total = $query->found_posts;
Kresimir Pendic
fonte
3
Essa deve ser a resposta aceita.
Christine Cooper
11
Esta é absolutamente a resposta certa.
Infinity Media
Também reconfirmo que esta é a resposta correta. Isso deve ser aceito.
Eu sou a pessoa mais estúpida