こんな方に読んでほしい
[記事の内容]

今回は「新記事を大きく表示し、他の記事も一覧表示する方法」について解説していきます。
主に、ブログやコラムで使用することが多い技術になります。
イメージは以下のようになります。

カテゴリー毎に条件分岐をし表示させております。
注目記事を目立たせつつ一覧も表示できるメリットもあり、初心者でもカスタマイズしやすいです。
コードは以下になります。
<?php
$recent_id = 0;
$target_category_slug = 'xxxx';
$recent_posts = get_posts(array(
'posts_per_page' => 1,
'category_name' => $target_category_slug
));
if ($recent_posts) {
echo '<ul class="articles-main">';
foreach ($recent_posts as $post) {
setup_postdata($post);
$recent_id = $post->ID;
?>
<li>
最初の大きい記事
</li>
<?php
}
echo '</ul>';
wp_reset_postdata();
}
$the_query = new WP_Query(array(
'post__not_in' => array($recent_id),
'posts_per_page' => 3,
'category_name' => $target_category_slug
));
if ($the_query->have_posts()) {
echo '<ul class="articles-child">';
while ($the_query->have_posts()) {
$the_query->the_post();
?>
<li>
2件目以降記事
</li>
<?php
}
echo '</ul>';
}
wp_reset_postdata();
?>
</div>
$target_category_slug = 'xxxx'には、スラッグを指定します。get_posts()で、posts_per_pageを「1」に指定します。ul class="articles-main"〜/ulで囲みリスト表示されます。li〜/liの中に記述してください。wp_reset_postdata()でグローバルな投稿データをリセットし、他のクエリに影響を与えないようにします。$recent_idを除外します。posts_per_pageで同じカテゴリーからさらに3件取得します。ul class="articles-child"〜/ulで囲みリスト表示されます。li〜/liの中に記述してください。wp_reset_postdata()でクエリのリセットをしています。上記のコードは投稿タイプでしたが、カスタム投稿タイプの場合についても簡単に解説します。
コードは以下になります。
<?php
$recent_id = 0;
$target_category_slug = 'css'; // ここを取得したいカテゴリーのスラッグに変更
$target_post_type = 'web'; // ここをカスタム投稿タイプ名に変更
// 最新1件の記事取得(メイン記事)
$recent_posts = get_posts(array(
'posts_per_page' => 1,
'category_name' => $target_category_slug,
'post_type' => $target_post_type,
));
if ($recent_posts) {
echo '<ul class="articles-main">';
foreach ($recent_posts as $post) {
setup_postdata($post);
$recent_id = $post->ID;
?>
<li>
カスタム投稿(web)のカテゴリー「css」の記事1件目が表示
</li>
<?php
}
echo '</ul>';
wp_reset_postdata();
}
// 最新記事を除いた次の3件取得(サブ記事)
$the_query = new WP_Query(array(
'post__not_in' => array($recent_id),
'posts_per_page' => 3,
'category_name' => $target_category_slug,
'post_type' => $target_post_type,
));
if ($the_query->have_posts()) {
echo '<ul class="articles-child">';
while ($the_query->have_posts()) {
$the_query->the_post();
?>
<li>
カスタム投稿(web)のカテゴリー「css」の記事2件目以降が表示
</li>
<?php
}
echo '</ul>';
}
wp_reset_postdata();
?>
</div>
$target_category_slug = 'css'には、カテゴリーのスラッグを指定します。$target_post_type = 'xxx'には、カスタム投稿タイプを指定します。今回は、チェックボックスのみでしたが、お仕事で他の第2引数を使用することがありましたら、
解説していきます。
2025.10.17
2025.10.17
2025.10.15
2025.08.16
2025.08.13
2025.08.12
2023.06.15
2022.06.30
2020.03.22
2020.03.06

© 2025 shu-naka-blog