WordPressでニュース一覧など記事をループで表示させるページで、繰り返しの記述は色々あるのですが今回は「WP_Query」について説明します。
ひとまず、下記コードを繰り返ししたいページのテンプレートに入れるだけで、動作しちゃいます。もう何も考えずにこれをコピペして一部変えるだけで完成するんですから簡単なものです。
ひとまずループで悩んでいたらこれで解決なんですが、今回はちょっとだけWP_Queryについて説明します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php $the_query = new WP_Query( array( 'post_status' => 'publish', 'post_type' => 'post', //投稿タイプ名 'paged' => $paged, 'posts_per_page' => 10, // 表示件数 'orderby' => 'date', 'order' => 'DESC' ) ); ?> <?php if ($the_query->have_posts()) :?> <?php while ($the_query->have_posts()) : $the_query->the_post();?> <li> <a href="<?php the_permalink(); ?>"> <p><?php the_time('Y年m月d日') ?></p> <p><?php the_title(); ?></p> </a></li> <?php endwhile;?> <?php endif;?> |
WP_Queryってそもそも何ぞや?
あるページのループを呼び出すときにクエリを呼び出します。
クエリというのは、そのページをループで表示させるときの絞り込みというイメージです。
上に紹介した記述のイメージでは「このテンプレートには、postの記事を10件、dateをDESKの並びで表示させよう」という指示が書いてあるわけで、これでそのループが何を呼び出すべきなのかを指示出来るんです。
WP_Queryはそのクエリを指定するための記述なわけです。
ちなみに下記ページの「プロパティ」を参照してもらうと、色々と細かく取得できるわけです。
まず、クエリを呼び出して、次にループさせることで適切な記事のループを取得してるわけなのです。
【補足】
WP_Queryはサブクエリを呼び出す記述になります。
別に気にせず使う事は出来るのですが、メインクエリは書き換えずに、メインクエリとは別に同じページでループを入れたいときなどに使ったりします。
メインクエリ書き換えは「pre_get_posts」なのですが、これはまたの機会に。