引数に何を入れても、私のWP_Query
が私の公開された投稿すべてを常に表示する理由を理解することはできません。
<?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>";
}
?>
私はここで何か悪いことをしていますか? WP_Query()
のドキュメントを読んだ後、どこで問題が発生しているのかわかりません。助けになれば幸いです。
アップデート
私はこのコードを試しましたが、私はまだ同じ応答を得ています。すべての投稿はループで返されています。
$args = array(
'posts_per_page' => 1,
'meta_query' => array(
array(
'key' => 'display',
'value' => 'about',
'compare' => '=',
)
),
);
アップデート2
$about_preview_query->found_posts
を印刷した場合、出力は1になります。したがって、投稿をループする方法に問題があると思われます。
<?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; ?>
あなたが間違った議論をしているからです。 WP_Query()
に正しい引数を与えてください。
もう一つ、あなたはのようなコードを使用する必要があります
$args = array(
'posts_per_page' => 5,
'meta_query' => array(
array(
'key' => 'display',
'value' => 'about',
'compare' => '=', // (Read all comparison operators at provided link)
),
),
);
numberposts
にはパラメータはありません。代わりにposts_per_page
を使用してください。だからあなたのコードはなるでしょう...
<?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>";
}
?>
あなたがする必要があるのは変更だけです
'posts_per_page' => 1,
に
'posts_per_page' => -1,