【WordPress】すべてのカテゴリー別にそれぞれの記事を取得、表示

投稿されているすべてのカテゴリー別に最近の記事の数件を取得、表示

カテゴリーごとにforeachでクエリーを取得してさらにforeachでその投稿内容を表示します。
ブログやお知らせトップの一覧などで利用します。

index.php等
<?php
$categoryList = get_categories(); // すべてのカテゴリーを取得
foreach($categoryList as $categories) : // 登録されているカテゴリーの数だけ繰り返す
?>
    <?php query_posts('cat='.$categories->cat_ID); // カテゴリー別のクエリーを取得
        if (have_posts()) : the_post(); ?>
        <?php // カテゴリー別の中身を取得
            $category = get_the_category();
            $cat_id   = $category[0]->cat_ID; //カテゴリーID
            $cat_name = $category[0]->cat_name; //カテゴリー名
            $cat_slug = $category[0]->category_nicename; //カテゴリースラッグ
            $cat_link = get_category_link($cat_id); //カテゴリーurl
        ?>
<h2><? echo $cat_name; ?></h2>
    <p><a href="<?php echo $cat_link;?>" title="<?php echo $cat_name;?>">VIEW MORE &gt;&gt;</a></p>
    <ul>
        <?php
            $cat_posts = get_posts(array(
                'post_type' => 'post', // 投稿タイプ
                'category_name' => $cat_slug, // カテゴリをスラッグで指定する場合
                'posts_per_page' => 3, // 表示件数
                'orderby' => 'date', // 表示順の基準
                'order' => 'DESC' // 昇順・降順
                ));
            global $post;
            if($cat_posts): foreach($cat_posts as $post): setup_postdata($post); ?>
        <li><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
            <p><?php echo $cat_name; ?></p>
            <?php the_post_thumbnail('thumbnail'); ?>
            <time datetime="<?php echo esc_attr( get_the_date() ); ?>" title="<?php echo esc_attr( get_the_date() ); ?>"><?php the_time( get_option( 'date_format' ) ); ?></time>
            <h3><?php the_title(); ?></h3>
            </a>
        </li>
    <?php endforeach; endif; wp_reset_postdata(); ?>
    </ul>
<?php endif; endforeach; wp_reset_query();?>

Yuki Nakata

中田デザイン事務所 代表。
WEBデザイナー(フリー)/ WEB講師(非常勤)/ 海外販売(法人)他

お仕事のご相談はお問い合わせフォームへお願いします。