web-dev-qa-db-fra.com

WP_Query affichant TOUS les messages

Je n'arrive pas à comprendre pourquoi mon WP_Query affiche toujours tous mes articles publiés, peu importe ce que j'ai mis dans les arguments.

<?php 

    $args = array('numberposts' => 1,
                    'meta_key' => 'display',
                    'meta_value' => 'about'
    );

    $about_preview_query = new WP_Query($args);

    if ($about_preview_query->have_posts()) {
        print "<h1>FOUND POSTS</h1>";
    }

    while ($about_preview_query->have_posts()) {
        $about_preview_query->the_post();
        print "<h1>";
        the_title();

        print "</h1>";

    }
?>

Est-ce que je fais quelque chose de mal ici? Après avoir lu les docs sur WP_Query(), je ne peux pas comprendre où je me trompe, j'apprécie toute l'aide que je peux obtenir.

Mettre à jour

J'ai essayé ce code et j'obtiens toujours la même réponse. Tous les messages sont renvoyés dans la boucle.

    $args = array(
        'posts_per_page' => 1,
        'meta_query' => array(
            array(
                'key' => 'display',
                'value' => 'about',
                'compare' => '=',
             )
        ),
    );

Mise à jour 2

Il semble que si j’imprime $about_preview_query->found_posts, le résultat est égal à 1. Je suppose donc qu’il ya un problème avec la façon dont je boucle les messages:

<?php if ($about_preview_query->have_posts()): ?>

    <h1>Has <?php print $about_preview_query->found_posts ?> Posts</h1>

    <?php while ($about_preview_query->have_posts()): $about_preview_query->the_post(); ?>
        <h2><?php the_title(); ?></h2>
    <?php endwhile; ?>

<?php endif; ?>
1

C'est parce que vous donnez de mauvais arguments. Fournissez les bons arguments à WP_Query() .

Regardez également les paramètres de champs personnalisés

Une dernière chose, vous devrez utiliser un code comme

$args = array(
    'posts_per_page' => 5,
    'meta_query' => array(
        array(
            'key'     => 'display',
            'value'   => 'about',
            'compare' => '=', // (Read all comparison operators at provided link)
        ),
    ),
);
3
Ali

Il n'y a pas de paramètre pour numberposts. Utilisez posts_per_page à la place. Donc, votre code deviendra ...

<?php 

    $args = array(
        'posts_per_page' => 1,
        'meta_key' => 'display',
        'meta_value' => 'about'
    );

    $about_preview_query = new WP_Query($args);

    if ( $about_preview_query->have_posts() ) {
        print "<h1>FOUND POSTS</h1>";
    }

    while ( $about_preview_query->have_posts() ) {
        $about_preview_query->the_post();
        print "<h1>";
        the_title();
        print "</h1>";
    }
?>
1
Robert hue

Tout ce que vous devez faire c'est changer

'posts_per_page' => 1,

à

'posts_per_page' => -1,
0
MoreMadness