Conteggio dei post di un loop (WP_Query)?


10

Ho provato in questo modo per visualizzare NO 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 NO di post = 0 devo 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)">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(); ?> 

Ma invece del totale dei post, non ottengo nulla.

Qualche suggerimento per risolvere questo problema?


2
Ehi, vuoi tornare e valutare una delle 2 risposte che ti sono state fornite?
helgatheviking

Se una delle risposte ti è stata utile, prendi in considerazione l'idea di accettarla. Vedi » Cosa devo fare quando qualcuno risponde alla mia domanda? «E / o» Perché è importante votare? «, Ulteriori informazioni sul modello di sviluppo di WordPress sono disponibili presso il centro assistenza .
Nicolai,

Risposte:


23

Alcune informazioni aggiuntive, non è necessario contare nuovamente i post, perché WP_Querygià fatto per te. Per chiarire questo, alcune informazioni dal riferimento di classe di WP_Querycome si trovano nella sezione »Proprietà«:

$ post_count
Il numero di post visualizzati.

$ found_posts
Il numero totale di post trovati corrispondenti ai parametri della query corrente

Ciò significa

  1. $post_countnon ti darà il conteggio totale dei post. Molto probabilmente ti fornirà il numero di post che hai definito con il post_per_pageparametro, a meno che tu abbia meno post di quello o che tu sia nell'ultima pagina e ne rimangano solo meno.
  2. $found_postspuò essere utilizzato per ottenere il numero totale di post correlati a una query specifica. Quindi non è necessario contarli di nuovo.

Nel tuo caso puoi ottenere il conteggio totale nella tua $countvariabile in questo modo:

$count = $news_2->found_posts;

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


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

4

Non è necessario contare i post per mostrare qualcosa di diverso se non vengono trovati post. Puoi semplicemente usare la elseparte del tuo if($news_2->have_posts())controllo.

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

Ma se devi veramente contare il numero di post restituiti, puoi usarlo

$count = count( $news_2->posts );
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.