¿Cómo contar las entradas de un bucle (WP_Query)?
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?

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
$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ámetropost_per_page
, a menos que tengas menos publicaciones que eso o estés en la última página y solo queden menos publicaciones.$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ó.

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