Compter les messages d'une boucle (WP_Query)?

10

J'ai essayé de cette façon d'afficher NON de poste:

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

si le NO de post = 0 j'ai besoin d'afficher ceci: -

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

Mais au lieu du total des messages, je ne reçois rien.

Des suggestions pour résoudre ce problème?

user49575
la source
2
Hé, vous voulez revenir et peser sur l'une des 2 réponses qui vous ont été fournies?
helgatheviking
Si l' une des réponses vous a été utile, envisagez de l'accepter. Voir » Que dois-je faire lorsque quelqu'un répond à ma question? «Et / ou» Pourquoi le vote est-il important? «, Plus d'informations sur le modèle de développement WordPress sont disponibles dans le centre d'aide .
Nicolai

Réponses:

23

Quelques informations supplémentaires, pas besoin de compter à nouveau les messages, car WP_Querydéjà fait pour vous. Pour clarifier cela, certaines informations de la référence de classe se WP_Querytrouvent dans la section »Propriétés«:

$ post_count
Le nombre de publications affichées.

$ found_posts
Le nombre total de publications trouvées correspondant aux paramètres de requête actuels

Ce que cela signifie

  1. $post_countne vous donnera pas le nombre total de messages. Il vous donnera très probablement le nombre de publications que vous avez définies avec le post_per_pageparamètre, sauf si vous avez moins de publications que cela ou que vous êtes sur la dernière page et qu'il ne reste que moins de publications.
  2. $found_postspeut être utilisé pour obtenir le nombre total de messages liés à une requête spécifique. Il n'est donc pas nécessaire de les compter à nouveau.

Dans votre cas, vous pouvez obtenir le nombre total dans votre $countvariable comme ceci:

$count = $news_2->found_posts;

En plus de cela, @helgatheviking a raison de dire que, d'après ce que vous avez montré dans votre question, vous n'avez pas besoin d'un conditionnel supplémentaire, mais pouvez simplement utiliser la have_posts()méthode, dans le conditionnel que vous avez déjà, pour cela, comme elle l'a suggéré.

Nicolai
la source
4
+1 pour la propriété found_posts. Vous apprenez quelque chose de nouveau chaque jour! :)
helgatheviking
4

Vous n'avez pas besoin de compter les messages pour afficher quelque chose de différent si aucun message n'est trouvé. Vous pouvez simplement utiliser la elsepartie de votre if($news_2->have_posts())chèque.

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

Mais si vous avez vraiment besoin de compter le nombre de messages retournés, vous pouvez utiliser

$count = count( $news_2->posts );
helgatheviking
la source