¿Contando las publicaciones de un bucle personalizado de Wordpress (WP_Query)?

41

Traté de colocar esto:

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

al final del ciclo:

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

Pero en lugar del total de publicaciones, obtengo esta salida:

Traducción 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

Alguna sugerencia para solucionar esto?

janoChen
fuente

Respuestas:

74

La forma correcta de obtener el número total de publicaciones es:

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

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

Editar: reconocer la respuesta de @Kresimir Pendic como probablemente correcta. post_countes el recuento de publicaciones para esa página en particular, mientras que found_postses el recuento de todas las publicaciones disponibles que cumple con los requisitos de la consulta sin paginación. Gracias por la corrección.

Manny Fleurmond
fuente
¡Gracias! Hola una última pregunta. ¿Cómo puedo usar ese número para hacer una declaración if que está fuera de ese ciclo (antes del ciclo)? Porque parece que el número solo se muestra cuando coloco la variable después de ese ciclo.
janoChen
44
Puede poner $ count = $ custom_posts-> post_count justo después de $ custom_posts-> query (). Tenga en cuenta que $ custom_posts-> post_count solo le da el número de resultados en esa 'página' del conjunto de resultados. Si necesita obtener el número total de resultados en el conjunto de resultados 'completo', use $ custom_posts-> found_posts.
Robert Durgin
2
Es probable que esta respuesta no sea correcta para la mayoría de las situaciones. Use found_posts (todas las publicaciones encontradas) en lugar de post_count (número de publicaciones para mostrar en esta página). Este comentario es redundante lógicamente hablando, pero no socialmente hablando.
Herbert Van-Vliet
1
Esta respuesta es incorrecta. $custom_posts->post_countdevolverá la cantidad de publicaciones que se muestran en esta página, por lo que mostrará el posts_per_pagevalor de la consulta o un valor inferior si la cantidad restante para mostrar es menor. la respuesta correcta debe ser <@kresimir-pendic>la respuesta que usa$custom_posts->found_posts
Infinity Media
42

Manny enlazó la página de documentación correcta pero post_countestá equivocado. Para obtener el número total de publicaciones WP_Querydevueltas, use "found_posts"

<?php

// The Query
$query = new WP_Query( $args );
$total = $query->found_posts;
Kresimir Pendic
fuente
3
Esta debería ser la respuesta aceptada.
Christine Cooper
1
Esta es absolutamente la respuesta correcta.
Infinity Media
También reconfirmo que esta es la respuesta correcta. Esto debe ser aceptado.
Soy la persona más estúpida el