Numărarea postărilor dintr-un loop (WP_Query)?

29 mar. 2014, 16:28:57
Vizualizări: 41.6K
Voturi: 10

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

2
Comentarii

Hei, vrei să revii și să îți exprimi părerea despre oricare dintre cele 2 răspunsuri care ți-au fost oferite?

helgatheviking helgatheviking
2 apr. 2014 16:13:27

Dacă orice parte a răspunsului ți-a fost de ajutor, atunci consideră să îl accepți. Vezi »Ce ar trebui să fac când cineva răspunde la întrebarea mea?« și/sau »De ce este importantă votarea?«, mai multe informații despre modelul de dezvoltare WordPress sunt disponibile la [help].

Nicolai Grossherr Nicolai Grossherr
30 apr. 2015 18:38:29
Toate răspunsurile la întrebare 2
1
25

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:

  1. $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 parametrul post_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.
  2. $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.

29 mar. 2014 17:26:16
Comentarii

+1 pentru proprietatea found_posts. În fiecare zi înveți ceva nou! :)

helgatheviking helgatheviking
30 mar. 2014 02:23:47
0

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 );
29 mar. 2014 16:46:41