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

一般的な投稿の一覧ページでは、リスト形式で最新順に投稿タイトルを並べる的な表示形式が普通ですよね。ですが、最新の投稿1件だけリスト形式に含ませずにレイアウトを変えて大きく打ち出すような見せ方をしたい場合もあります。少し力を入れたノウハウメディアみたいなサイトなどがそれでしょうか。
ページネーションがある投稿一覧ページの1ページ目の最新投稿だけ大きく打ち出し、それ以降は普通にリスト形式でつらつらと並べ、2ページ目以降も普通のリスト形式の表示にする、みたいな。
今回はその方法についてご紹介です。
一覧ページのテンプレートファイル、ここでは通常の「投稿」についてこれをするケースを考えて、archive.php をカスタマイズしてみます。
<?php
if (have_posts()) {
while (have_posts()) {
the_post();
//ループ処理
}
}
global $wp_rewrite;
$paginate_base = get_pagenum_link(1);
if(strpos($paginate_base, '?') || ! $wp_rewrite->using_permalinks()){
$paginate_format = '';
$paginate_base = add_query_arg('paged','%#%');
} else {
$paginate_format = (substr($paginate_base,-1,1) == '/' ? '' : '/') .
user_trailingslashit('page/%#%/','paged');
$paginate_base .= '%_%';
}
echo paginate_links(array(
'base' => $paginate_base,
'format' => $paginate_format,
'total' => $wp_query->max_num_pages,
'mid_size' => 1,
'current' => ($paged ? $paged : 1),
'prev_text' => '<',
'next_text' => '>',
)); ?>
これで最新の投稿1件だけリスト外に出して、それ以降はリスト表示になるHTMLができあがります。
なおページネーションについては、「固定ページにページネーション機能を持たせる」にサンプルコードがありますので、それをそのままコピペして使ってもらえればOK。
「ページネーションのある投稿一覧ページで、最新の投稿1件だけレイアウトを変える」HTMLの完成です。