¿Contando las publicaciones de un bucle (WP_Query)?

10

Traté de esta manera para mostrar NO de la publicación:

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

  ?>

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



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

si el NO de post = 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;

  if ($count  == '0') {

  ?>
  <li><h3><a href="javascript:void(0)">No Post</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 publicaciones, no obtengo nada.

Alguna sugerencia para solucionar esto?

usuario49575
fuente
2
Oye, ¿quieres volver y evaluar cualquiera de las 2 respuestas que se te han proporcionado?
helgatheviking
Si alguna de las respuestas fue útil para usted, considere aceptarla. Ver » ¿Qué debo hacer cuando alguien responde mi pregunta? «Y / o» ¿Por qué es importante votar? «, Hay más información sobre el modelo de desarrollo de WordPress disponible en el centro de ayuda .
Nicolai

Respuestas:

23

Alguna información adicional, no es necesario contar las publicaciones nuevamente, porque WP_Queryya lo hizo por usted. Para aclarar esto, alguna información de la Referencia de clase de WP_Querycomo se encuentra en la sección »Propiedades«:

$ post_count
El número de publicaciones que se muestran.

$ 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_countno te dará el recuento total de publicaciones. Lo más probable es que te dé la cantidad de publicaciones que has definido con el post_per_pageparámetro, a menos que tengas menos publicaciones que eso o estés en la última página y solo queden menos publicaciones.
  2. $found_postsse puede usar para obtener el número total de publicaciones relacionadas con una consulta específica. Entonces no hay necesidad de contarlos nuevamente.

En su caso, puede obtener el recuento total en su $countvariable de esta 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 adicional, sino que puedes usar el have_posts()método, en el condicional que ya tienes, para eso, como ella sugirió.

Nicolai
fuente
44
+1 para la propiedad found_posts. ¡Tu aprendes algo nuevo cada dia! :)
helgatheviking
4

No necesita contar las publicaciones para mostrar algo diferente si no se encuentran publicaciones. Simplemente puede usar la elseparte de su if($news_2->have_posts())cheque.

$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 Post</h3></li>

    <?php } ?> 

<?php wp_reset_query(); ?> 

Pero si realmente necesita contar la cantidad de publicaciones devueltas, puede usar

$count = count( $news_2->posts );
helgatheviking
fuente