WordPress 全てのカテゴリを取得し新着記事一覧を作る
PR
WordPress でカテゴリごとの新着記事を表示させ方法です。カテゴリのリストを取得して、それを元にループを作成して記事一覧を作る。
すべてのカテゴリを取得する
get_categories()
全てのカテゴリを取得するにはこちらの関数を利用する、引数でオプションを指定することが可能で記事を持っていない空のカテゴリの除外や特定のカテゴリの除外なども行える。またカテゴリ以外のタクソノミーでも利用することが出来る。
get_categories の引数オプション
$args = array( 'type' => 'post', 'child_of' => 0, 'parent' => '', 'orderby' => 'name', 'order' => 'ASC', 'hide_empty' => 1, 'hierarchical' => 1, 'exclude' => '', 'include' => '', 'number' => '', 'taxonomy' => 'category', 'pad_counts' => false );
今回はすべてのカテゴリを取得して行いますので、特に何もせずデフォルト値で行います。
すべてのカテゴリ名とIDを配列にする
$get_cat = get_categories(); foreach($get_cat as $val) { $category_list_id[$val->name]= $val->cat_ID; }
get_categories() で取得した情報から、idとカテゴリ名を取得して配列に入れています。
カテゴリ名をキーに、IDを値にしていますが逆でも特に意味はありません。IDだけを取得せずにカテゴリ名も取得しているのは、後に出力するときに何のカテゴリか明記するときに使いやすいので取得しています。
ちなみに get_categories() で取得できる情報
["term_id"]=> int(52) ["name"]=> string(9) "あさひ" ["slug"]=> string(27) "%e3%81%82%e3%81%95%e3%81%b2" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(52) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(1) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(52) ["category_count"]=> int(1) ["category_description"]=> string(0) "" ["cat_name"]=> string(9) "あさひ" ["category_nicename"]=> string(27) "%e3%81%82%e3%81%95%e3%81%b2" ["category_parent"]=> int(0)
一番上の親カテゴリだけにしぼりたい場合は、parent の値が0の時という条件を加えればフィルタリング出来る。
取得したリストからカテゴリごとの記事一覧を作る
<?php foreach($category_list_id as $key => $val): ?> <?php echo $key; //キーにカテゴリ名を取得しておいたので取得しなくてもそのまま出力出来る ?> <?php $cat_post = get_posts('category='.$val.'&numberposts=4'); foreach($cat_post as $post): ?> <?php the_title(); ?> <?php endforeach; ?> <?php endforeach; ?>
ひとつ目の foreach のループで各カテゴリごとに実行、ふたつ目のループでget_postsを使って記事を取得している、この際に引数でカテゴリをidで指定している。ここで取得しておいたカテゴリのIDを利用することになる。
あとは取得した記事を整えて表示するだけになる。
PR
COMMENT