WordPress
カスタマイズ事例

WORDPRESS CUSTOMIZATION

ページネーションのある投稿一覧ページで、最新の投稿1件だけレイアウトを変える

一般的な投稿の一覧ページでは、リスト形式で最新順に投稿タイトルを並べる的な表示形式が普通ですよね。ですが、最新の投稿1件だけリスト形式に含ませずにレイアウトを変えて大きく打ち出すような見せ方をしたい場合もあります。少し力を入れたノウハウメディアみたいなサイトなどがそれでしょうか。
ページネーションがある投稿一覧ページの1ページ目の最新投稿だけ大きく打ち出し、それ以降は普通にリスト形式でつらつらと並べ、2ページ目以降も普通のリスト形式の表示にする、みたいな。
今回はその方法についてご紹介です。

一覧ページのテンプレートファイル、ここでは通常の「投稿」についてこれをするケースを考えて、archive.php をカスタマイズしてみます。

<?php 
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; //現在のページネーション番号を取得
$recent_id = 0;
$recent_posts = get_posts(array(
  'posts_per_page' => 1 //最新1件のみ取得
));
if ($recent_posts) {
  foreach ($recent_posts as $recent_post) {
    $recent_id = $recent_post->ID; //最新の投稿のID
    if ($paged == 1) {
      //ここに最新投稿の表示内容を記述
?>
      <a href="<?php echo get_the_permalink($recent_id); ?>">
        <?php echo get_the_title($recent_id); ?>
      </a>
    <?php }
  }
}

$the_query = new WP_Query(array(
  'paged' => $paged,
  'post__not_in' => array($recent_id),
));

if ($the_query->have_posts()) { ?>
<ul>
  <?php while ($the_query->have_posts()) {
    $the_query->the_post();
    //ここに2件目以降の投稿の表示内容を記述
?>
    <li>
      <a href="<?php echo get_the_permalink($post->ID); ?>">
        <?php echo get_the_title($post->ID); ?>
      </a>
    </li>
  <?php } ?>
</ul>
<?php }
wp_reset_query();

これで最新の投稿1件だけリスト外に出して、それ以降はリスト表示になるHTMLができあがります。
 
なおページネーションについては、「固定ページにページネーション機能を持たせる」にサンプルコードがありますので、それをそのままコピペして使ってもらえればOK。

「ページネーションのある投稿一覧ページで、最新の投稿1件だけレイアウトを変える」HTMLの完成です。

【100ウェブ新着情報メルマガ】

WordPressカスタマイズ事例やウェブ制作ノウハウの新着情報、お役立ち情報を
リアルタイムにメルマガ配信!