WordPressでページングを設置する方法

WordPressで記事一覧を表示する際に便利なのが「ページング(ページ送り)」です。この記事では、WP_Query
とpaginate_links()
を使って、ブログ一覧にページングを設置する方法を解説します。
Contents
WP_Queryの基本構文と引数
ページングを含むカスタムクエリでは WP_Query
を使用します。基本構文は以下の通りです。
$paged = max(1, get_query_var('paged') ? get_query_var('paged') : get_query_var('page'));
$args = array(
'post_type' => 'post', // 投稿タイプ(投稿: post, 固定ページ: page など)
'posts_per_page' => 10, // 1ページに表示する記事数
'paged' => $paged // 現在のページ番号
);
$the_query = new WP_Query($args);
よく使う引数一覧
引数名 | 説明 |
---|---|
post_type | 投稿タイプ(post , page , custom_post_type など) |
posts_per_page | 1ページに表示する件数 |
paged | 現在のページ番号(必須) |
category_name | カテゴリースラッグで絞り込み |
orderby / order | 並び順の設定(例:date , title ) |
WordPressでページングを設置する方法
以下は、記事一覧を表示し、ページングを設置するサンプルコードです。
<div class="article-list">
<div class="article-list__inner">
<h3 class="article-list__title">ブログ記事一覧</h3>
<?php
$paged = max(1, get_query_var('paged') ? get_query_var('paged') : get_query_var('page'));
$args = array(
'post_type' => 'post',
'posts_per_page' => 10,
'paged' => $paged
);
$the_query = new WP_Query($args);
if ($the_query->have_posts()) :
while ($the_query->have_posts()) : $the_query->the_post();
?>
<a href="<?php the_permalink(); ?>" class="article-list__blog-media blog-media">
<!-- 記事カードのマークアップ -->
</a>
<?php
endwhile;
echo '<nav class="pagination">';
echo paginate_links(array(
'total' => $the_query->max_num_pages
));
echo '</nav>';
wp_reset_postdata();
endif;
?>
</div>
</div>
ページングが機能しない?404エラーになる場合の対処法
よくある原因
- 固定ページでカスタムクエリを使っている
- パーマリンク設定が影響している
対処法①:paged
の取得方法を調整する
$paged = max(1, get_query_var('paged') ? get_query_var('paged') : get_query_var('page'));
対処法②:パーマリンク設定を再保存する
WordPress管理画面 → 設定 → パーマリンク → 「変更を保存」をクリック。
これにより内部ルールが再構築され、404が解消されることがあります。
ページングにスタイルを適用する(SCSS例)
ページングリンクにスタイルを適用することで、ユーザーにとってわかりやすいナビゲーションになります。
.pagination {
display: flex;
justify-content: center;
gap: 8px;
margin-top: 2rem;
flex-wrap: wrap;
}
.pagination__item a,
.pagination__item span {
display: inline-block;
padding: 0.5em 1em;
border: 1px solid #ccc;
border-radius: 4px;
text-decoration: none;
color: #333;
background-color: #fff;
font-size: 0.9rem;
transition: all 0.2s;
}
.pagination__item a:hover,
.pagination__item span:hover {
background-color: #f5f5f5;
border-color: #999;
}
.pagination__item .current {
background-color: #333;
color: #fff;
border-color: #333;
pointer-events: none;
}
HTML側では paginate_links()
の出力をラップして .pagination__item
クラスを付与してください。
まとめ
WP_Query
を使って投稿一覧を取得paginate_links()
でページングを設置paged
の取得方法に注意(特に固定ページやhome.phpの場合)- SCSSでページングの見た目も整える
これで、WordPressのページングを快適に実装できます!
参考サイト
このページング機能を活用すれば、カテゴリページや検索結果ページにも応用が可能です。