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; ?>
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)
),
),
);
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>";
}
?>
Tout ce que vous devez faire c'est changer
'posts_per_page' => 1,
à
'posts_per_page' => -1,