Conteggio dei post in un loop (WP_Query)?
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?

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:
$post_count
non ti darà il conteggio totale dei post. Probabilmente ti restituirà il numero di post definito con il parametropost_per_page
, a meno che tu non abbia meno post di quelli specificati o ti trovi sull'ultima pagina e rimangono solo pochi post.$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.

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