回答:
WordPress codex でWP_Queryの関数リファレンスを読む必要があります。見るべき例がたくさんあります。を使用して結果セットをループしたくない場合は、プロパティでをwhile
使用してクエリによって返されたすべての投稿を取得できWP_Query
ますposts
。
例えば
$query = new WP_Query( array( 'post_type' => 'page' ) );
$posts = $query->posts;
foreach($posts as $post) {
// Do your stuff, e.g.
// echo $post->post_name;
}
'posts_per_page'=>1
、argsでこのような関数を使用できます。function wp_queryfirstpost($args) { $q=new WP_Query($args); $pp=$q->get_posts(); $firstpost=false;if ($pp) $firstpost=$pp[0]; wp_reset_postdata(); return $firstpost; }
$query->posts
代わりに使用する必要$query->get_posts()
があります。クエリ解析の再実行と追加の不要なデータベースクエリをトリガーします
実際、while()
ループの使用を拒否する必要はありません。同じWP_Postオブジェクトが既にpost
プロパティに保存されています:
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
// now $query->post is WP_Post Object, use:
// $query->post->ID, $query->post->post_title, etc.
}
}
if
冗長です。
if
冗長ではありません。この正確なケースではそうですが、ほとんどの生産状況では、ifとwhileの間で実行するコードがあります。
のget_posts( $args )
代わりにを使用することもできますwp_Query()
。これにより、投稿のリストが表示されます