仕事で使うのにちょっと調べてみたのでメモ。
まだ今回の案件で必要な要件は満たしてないからもう少しなんか考えないと行けないけど,忘れないように。
1 2 3 4 5 6 7 8 9 10 11 12 |
<ul> <?php global $post; $my_posts= get_posts(array( 'post_type' => array('post','item'), 'numberposts' => 10 )); foreach($my_posts as $post):setup_postdata($post); ?> <li><?php the_time('Y.m.d'); ?>:<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endforeach; ?> </ul> |
get_postsは,条件を指定して,その条件にマッチする投稿を取得するための関数です。
詳しくは,こちらのサイトとかCodexとかをご覧ください。
とりあえず今回必要なのは,post_type と numberposts です。
post_typeで投稿タイプを指定できます。
主に使用するのは,post (投稿),page(固定ページ),any(全て),post-type-slug(カスタム投稿タイプ)
あたりでしょうか?
カスタム投稿タイプを指定するときは単数スラッグ名を指定します。
例えば,商品管理という投稿タイプで「item」というスラッグを付けていたらこのitemを指定すればOKです。
複数指定する場合は,最初に書いたように配列にします。
1 |
'post_type' => array('post','item') |
numberpostsは,取得する投稿数を指定します。
省略した場合は初期値の5が指定されます。つまり5件。
10にすれば10件とれますし,-1なら全表示できます。
並び順を変更したい場合は,例には出てませんが,orderを使います。
昇順ならば
1 |
'order' => 'ASC' |
降順なら
1 |
'order' => 'DESC' |
です。よく見るヤツです。省略するとASCになります。
と,いうことで,最初のコードはテンプレートに書くと,
投稿とカスタム投稿「item」の新着記事を取得して両方あわせた状態での最新5件を取得してリストにして書き出す,という感じになります。
あとは,仕上げに投稿のカテゴリースラッグを取得して,それをdivとかspanのクラスに与えてあげて,カテゴリー毎に色分けとか作ればいい感じになる…予定なんですが,その辺はまた次回。。
コメントする