¿Cómo contar las entradas de un bucle (WP_Query)?

29 mar 2014, 16:28:57
Vistas: 41.6K
Votos: 10

Intenté esta forma de mostrar el número de entradas:

<?php 
 $news_2 = new WP_Query( array ('post_type'=> 'jobs','posts_per_page'=> '10' , 'meta_key' => 'status_for_jobs','meta_value' => '1') );
  if ( $news_2->have_posts() ) { while ( $news_2->have_posts() ) { $news_2->the_post();

  $count = $news_2->post_count; // Cuenta el número de posts

  ?>

    <li><h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3></li>



    <?php } } ?> <?php wp_reset_query(); ?> 

Si el número de entradas es 0, necesito mostrar esto:

<?php 
 $news_2 = new WP_Query( array ('post_type'=> 'jobs','posts_per_page'=> '10' , 'meta_key' => 'status_for_jobs','meta_value' => '1') );
  if ( $news_2->have_posts() ) { while ( $news_2->have_posts() ) { $news_2->the_post();

  $count = $news_2->post_count; // Cuenta el número de posts

  if ($count  == '0') {

  ?>
  <li><h3><a href="javascript:void(0)">No hay entradas</a></h3></li>

  <?php
  } else {
  ?> 
    <li><h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3></li>

<?php  }  ?>

    <?php } } ?> <?php wp_reset_query(); ?> 

Pero en lugar del total de entradas, no obtengo nada.

¿Alguna sugerencia para arreglar esto?

2
Comentarios

¿Hola, quieres volver y opinar sobre alguna de las 2 respuestas que te han proporcionado?

helgatheviking helgatheviking
2 abr 2014 16:13:27

Si cualquier parte de la respuesta te fue útil, entonces considera aceptarla. Mira »¿Qué debo hacer cuando alguien responde mi pregunta?« y/o »¿Por qué es importante votar?«, más información sobre el modelo de desarrollo de WordPress está disponible en la [ayuda].

Nicolai Grossherr Nicolai Grossherr
30 abr 2015 18:38:29
Todas las respuestas a la pregunta 2
1
25

Alguna información adicional, no es necesario contar las publicaciones nuevamente, porque WP_Query ya lo hizo por ti. Para aclarar esto, aquí hay información de la Referencia de Clases de WP_Query como se encuentra en la sección »Propiedades«:

$post_count
El número de publicaciones que se están mostrando.

$found_posts
El número total de publicaciones encontradas que coinciden con los parámetros de consulta actuales

Lo que esto significa es

  1. $post_count no te dará el conteo total de publicaciones. Lo más probable es que te dé el número de publicaciones que has definido con el parámetro post_per_page, a menos que tengas menos publicaciones que eso o estés en la última página y solo queden menos publicaciones.
  2. $found_posts se puede usar para obtener el número total de publicaciones relacionadas con una consulta específica. Por lo tanto, no es necesario contarlas nuevamente.

En tu caso, puedes obtener el conteo total en tu variable $count de la siguiente manera:

$count = $news_2->found_posts;

Además de eso, @helgatheviking tiene razón en que, por lo que has mostrado en tu pregunta, no necesitas un condicional extra, sino que puedes usar el método have_posts(), en el condicional que ya tienes, para eso, como ella sugirió.

29 mar 2014 17:26:16
Comentarios

+1 por la propiedad found_posts. ¡Siempre se aprende algo nuevo cada día! :)

helgatheviking helgatheviking
30 mar 2014 02:23:47
0

No necesitas contar las publicaciones para mostrar algo diferente si no se encuentran posts. Puedes simplemente usar la parte else de tu verificación if($news_2->have_posts()).

$news_2 = new WP_Query( array ('post_type'=> 'jobs','posts_per_page'=> '10' , 'meta_key' => 'status_for_jobs','meta_value' => '1') );

if ( $news_2->have_posts() ) { 

    while ( $news_2->have_posts() ) { 

        $news_2->the_post();

    ?> 

    <li><h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3></li>

<?php  } 

    } else { ?>

    <li><h3>No hay publicaciones</h3></li>

    <?php } ?> 

<?php wp_reset_query(); ?> 

Pero si realmente necesitas contar el número de publicaciones devueltas, puedes usar

$count = count( $news_2->posts );
29 mar 2014 16:46:41