Contando as postagens de um loop (WP_Query)?

10

Eu tentei desta forma para exibir NO da postagem:

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

se o NO do post = 0 eu preciso exibir isso: -

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

Mas, em vez do total de postagens, não recebo nada.

Alguma sugestão para corrigir isso?

user49575
fonte
2
Ei, quer voltar e analisar uma das 2 respostas que foram fornecidas a você?
helgatheviking
Se alguma resposta foi útil para você, considere aceitá-la. Consulte » O que devo fazer quando alguém responder à minha pergunta? «E / ou» Por que a votação é importante? «, Mais informações sobre o modelo de desenvolvimento do WordPress estão disponíveis na Central de Ajuda .
Nicolai

Respostas:

23

Algumas informações adicionais, não há necessidade de contar as postagens novamente, porque WP_Queryjá fiz isso por você. Para esclarecer isso, algumas informações da Referência de classe WP_Querysão encontradas na seção »Propriedades«:

$ post_count
O número de postagens que estão sendo exibidas.

$ found_posts
O número total de postagens encontradas que correspondem aos parâmetros de consulta atuais

O que isso significa é

  1. $post_countnão fornecerá a contagem total de postagens. Provavelmente, fornecerá o número de postagens que você definiu com o post_per_pageparâmetro, a menos que você tenha menos postagens do que isso ou esteja na última página e restem apenas menos postagens.
  2. $found_postspode ser usado para obter o número total de postagens relacionadas a uma consulta específica. Portanto, não há necessidade de contá-los novamente.

No seu caso, você pode obter a contagem total em sua $countvariável assim:

$count = $news_2->found_posts;

Além disso, @helgatheviking está certo de que, pelo que você mostrou na sua pergunta, você não precisa de um condicional extra, mas pode apenas usar o have_posts()método, no condicional que você já possui, como sugerido.

Nicolai
fonte
4
+1 para a propriedade found_posts. Você aprende algo novo a cada dia! :)
helgatheviking 30/03
4

Você não precisa contar as postagens para mostrar algo diferente se nenhuma postagem for encontrada. Você pode apenas usar a elseparte do seu 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(); ?> 

Mas se você realmente precisar contar o número de postagens retornadas, poderá usar

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