web-dev-qa-db-fra.com

Comment compter les types de publication personnalisés avec des opérateurs conditionnels

J'ai un type de message personnalisé que je souhaite utiliser avec une instruction if/elseif/else. Si post count du type post est égal à 1 do X, sinon si post count est supérieur à 1 do Y, sinon faites Z.

C’est le code que j’ai trouvé jusqu’à présent, mais lorsque j’ajoute le nombre de posts post, the_content et the_title commencent à afficher les pages normales, et non les types de post personnalisés. De plus, je suis presque sûr que cela ne compte pas non plus les messages. Si je supprime le if/elseif/else, la boucle while fonctionne parfaitement.

PS J'ai supprimé le code dans ma boucle while pour le simplifier. Le code normal est beaucoup plus compliqué pour le curseur. Le curseur fonctionne même avec une diapositive, j'ai donc besoin de la première instruction if pour l'omettre du curseur si un seul message est affiché.

function getTestimonial() {

    $args = array( 'post_type' => 'testimonial' );
    $loop = new WP_Query( $args );
    $count_posts = wp_count_posts( 'testimonial' );
    if(count($count_posts) == 1) :?>
        <?php the_content(); ?>
        <?php the_title(); ?>
    <?php elseif(count($count_posts) > 1) : ?>
        <?php if ($loop->have_posts()) : while ($loop->have_posts()) : $loop->the_post(); ?>
             <div id="slider">
                <?php the_content(); ?>
                <?php the_title(); ?>
              </div>
        <?php endwhile; endif; ?>
    <?php else: ?>
        <p>No listing found</p>
    <?php endif;
    }
1
Heather

WP_Query fournit des propriétés utiles. Il y en a deux que vous pourriez utiliser:

  • $post_count - Le nombre de publications affichées (si vous ne passez pas l'argument posts_per_page à la construction WP_Query, il renverra au plus 5 publications).
  • $found_posts - Le nombre total de publications trouvées correspondant aux paramètres de la requête actuelle (ainsi, si vous avez 100 publications dans la base de données qui correspondront aux arguments, cette propriété renverra 100)

Voici un exemple de code:

$args = array( 'post_type' => 'testimonial' );
$loop = new WP_Query( $args );
$numposts = $loop->post_count;
if ($numposts == 1) {
    // do X
} else if ($numposts > 1) {
    // do Y
} else {
    // do Z
}
3
Krzysztof Grabania

Pouvez-vous simplement print_r ($ loop) & print_r ($ count_posts) et voir quelle est la sortie?.

1
Annapurna