Numărarea postărilor dintr-un loop (WP_Query)?
Am încercat în acest fel să afișez numărul de postări:
<?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(); ?>
Dacă numărul de postări = 0 trebuie să afișez următoarele:
<?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)">Nu există postări</a></h3></li>
<?php
} else {
?>
<li><h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3></li>
<?php } ?>
<?php } } ?> <?php wp_reset_query(); ?>
Dar în loc să obțin numărul total de postări, nu primesc nimic.
Aveți sugestii pentru a rezolva această problemă?

Câteva informații suplimentare, nu este nevoie să numeri din nou postările, deoarece WP_Query
a făcut deja asta pentru tine. Pentru a clarifica acest lucru, iată câteva informații din Referința de Clasă a WP_Query
, așa cum se găsesc în secțiunea »Proprietăți«:
$post_count
Numărul de postări afișate.$found_posts
Numărul total de postări găsite care corespund parametrilor curenti ai interogării
Ce înseamnă acest lucru este:
$post_count
nu îți va oferi numărul total de postări. Cel mai probabil, îți va oferi numărul de postări pe care l-ai definit cu parametrulpost_per_page
, cu excepția cazului în care ai mai puține postări decât acesta sau ești pe ultima pagină și au rămas doar mai puține postări.$found_posts
poate fi folosit pentru a obține numărul total de postări legate de o interogare specifică. Deci nu este nevoie să le numeri din nou.
În cazul tău, poți obține numărul total în variabila ta $count
astfel:
$count = $news_2->found_posts;
În plus față de asta, @helgatheviking are dreptate că, din ceea ce ai arătat în întrebarea ta, nu ai nevoie de o condițională suplimentară, ci poți folosi direct metoda have_posts()
, în condiționala pe care o ai deja, pentru asta, așa cum a sugerat ea.

Nu este nevoie să numeri postările pentru a afișa ceva diferit dacă nu sunt găsite postări. Poți folosi direct partea else
din verificarea 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>Nicio postare</h3></li>
<?php } ?>
<?php wp_reset_query(); ?>
Dar dacă chiar ai nevoie să numeri postările returnate, poți folosi
$count = count( $news_2->posts );
