Conteggio dei post in un loop (WP_Query)?

29 mar 2014, 16:28:57
Visualizzazioni: 41.6K
Voti: 10

Ho provato questo modo per visualizzare il numero di post:

<?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 il numero di post = 0 ho bisogno di visualizzare questo:

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

Ma invece del totale dei post, non ottengo nulla.

Qualche suggerimento per risolvere questo problema?

2
Commenti

Ehi, vuoi tornare a dare il tuo contribuito su una delle 2 risposte che ti sono state fornite?

helgatheviking helgatheviking
2 apr 2014 16:13:27

Se qualsiasi parte della risposta ti è stata utile, considera di accettarla. Vedi »Cosa dovrei fare quando qualcuno risponde alla mia domanda?« e/o »Perché il voto è importante?«, ulteriori informazioni sul modello di sviluppo di WordPress sono disponibili nell'[aiuto].

Nicolai Grossherr Nicolai Grossherr
30 apr 2015 18:38:29
Tutte le risposte alla domanda 2
1
25

Alcune informazioni aggiuntive, non è necessario contare nuovamente i post, perché WP_Query lo ha già fatto per te. Per chiarire questo punto, ecco alcune informazioni tratte dalla sezione »Proprietà« della Class Reference di WP_Query:

$post_count
Il numero di post attualmente visualizzati.

$found_posts
Il numero totale di post trovati che corrispondono ai parametri della query corrente.

Questo significa che:

  1. $post_count non ti darà il conteggio totale dei post. Probabilmente ti restituirà il numero di post definito con il parametro post_per_page, a meno che tu non abbia meno post di quelli specificati o ti trovi sull'ultima pagina e rimangono solo pochi post.
  2. $found_posts può essere utilizzato per ottenere il numero totale di post relativi a una query specifica. Quindi non è necessario contarli nuovamente.

Nel tuo caso, puoi ottenere il conteggio totale nella tua variabile $count in questo modo:

$count = $news_2->found_posts;

Oltre a questo, @helgatheviking ha ragione nel dire che, da quello che hai mostrato nella tua domanda, non hai bisogno di un condizionale aggiuntivo, ma puoi semplicemente usare il metodo have_posts() nel condizionale che hai già, come ha suggerito.

29 mar 2014 17:26:16
Commenti

+1 per la proprietà found_posts. Si impara qualcosa di nuovo ogni giorno! :)

helgatheviking helgatheviking
30 mar 2014 02:23:47
0

Non è necessario contare i post per mostrare qualcosa di diverso se non vengono trovati articoli. Puoi semplicemente utilizzare la parte else del tuo controllo 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>Nessun Articolo</h3></li>

    <?php } ?> 

<?php wp_reset_query(); ?> 

Ma se hai davvero bisogno di contare il numero di post restituiti, puoi usare

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