
previous_posts_link()とは?
previous_posts_link()
は、投稿一覧ページやアーカイブページにおいて、「前のページ(より新しい投稿一覧)」へのリンクを表示する関数です。
一覧ページは複数の投稿をページ送り(ページネーション)で分割表示しており、この関数は「今見ているページの前のページ」へ戻るためのリンクを出力します。
previous_posts_link()の用途まとめ
- 投稿一覧(トップページ、カテゴリ、タグ、アーカイブページ)で使用
- 複数ページにわたる投稿を、前ページに戻るリンクを表示
- 通常、ページ番号順ではなく「時系列順」に並んでおり、「前ページ」はより新しい投稿群
previous_posts_link()の基本構文
previous_posts_link( string $label = null )
previous_posts_link()の引数の解説
引数 | 型 | 説明 |
---|---|---|
$label | string | 表示するリンクテキスト(例:「« 新しい記事」) |
省略した場合は WordPressのデフォルトテキスト(英語:”Newer Posts”)が使用されます。
日本語環境ではテーマによって「前の投稿」「新しい投稿」などに変化する場合があります。
previous_posts_link()の使用例(シンプル)
<?php previous_posts_link('« 新しい投稿'); ?>
出力例(HTML):
<a href="https://example.com/page/1/">« 新しい投稿</a>
previous_posts_link()の使用条件と出力の有無
- 現在のページが最初のページ以外である場合(例:
/page/2/
など)にのみ出力されます。 - つまり、1ページ目ではリンクは表示されません。
previous_posts_link()の関連関数との違い
関数名 | 意味 | リンク先 | 表示される場所 |
---|---|---|---|
previous_posts_link() | 前ページ | より新しい投稿一覧 | 2ページ目以降 |
next_posts_link() | 次ページ | より古い投稿一覧 | 最初のページなど |
posts_nav_link() | 前後両方を一括表示 | シンプルな前後リンク | 柔軟性が低い |
paginate_links() | 数字付きナビゲーション | 全ページ番号 | 柔軟で推奨される方法 |
next_posts_link() とのセット使用例
<div class="navigation">
<div class="alignleft"><?php previous_posts_link('« 新しい記事'); ?></div>
<div class="alignright"><?php next_posts_link('古い記事 »'); ?></div>
</div>
これはよく使われる組み合わせで、「新しい記事」へ戻るボタンと「古い記事」へ進むボタンを左右に表示します。
WP_Queryとの併用
カスタムクエリ(WP_Query
)を使用している場合、next_posts_link()
や previous_posts_link()
を使う際には
第2引数として「全ページ数(max_num_pages)」を指定する必要があります。
<?php
$custom_query = new WP_Query([
'post_type' => 'post',
'posts_per_page' => 5,
]);
if ( $custom_query->have_posts() ) :
while ( $custom_query->have_posts() ) : $custom_query->the_post();
the_title('<h2>', '</h2>');
endwhile;
previous_posts_link('« 新しい投稿', $custom_query->max_num_pages);
next_posts_link('古い投稿 »', $custom_query->max_num_pages);
wp_reset_postdata();
endif;
?>
カスタムラベル・装飾例
<div class="post-pagination">
<?php previous_posts_link('<span class="nav-arrow">←</span> 新しい投稿一覧'); ?>
</div>
CSS例:
.post-pagination {
margin-top: 30px;
text-align: left;
}
.post-pagination a {
padding: 8px 12px;
background-color: #e0e0e0;
color: #333;
text-decoration: none;
border-radius: 4px;
}
出力されない時のチェックポイント
- **現在のページが1ページ目(最初)**の場合 → 出力されません。
query_posts()
やWP_Query
使用時 →$max_num_pages
を第2引数に明示しないと出力されません。- 投稿件数が
posts_per_page
未満 → ページ分割されないため出力されません。
previous_posts_link()のよくある誤解
誤解 | 実際はこう |
---|---|
「前」とは古い記事 | ✕ 「前」は 時系列的に新しい投稿(前ページ) |
1ページ目に表示される | ✕ 1ページ目では非表示 |
ページ番号付きナビゲーションを表示できる | ✕ ページ番号は出力できない。paginate_links() を使うべき |
paginate_links() との比較
項目 | previous_posts_link() | paginate_links() |
---|---|---|
記事の移動方向 | 1つ前(新しい投稿一覧) | 任意のページ番号 |
デザイン | シンプルなテキストリンク | 数字 + テキストリンク(柔軟) |
カスタマイズ性 | 低い | 高い |
推奨度(現在の開発) | 中 | 高 |
previous_posts_link()のまとめ
項目 | 内容 |
---|---|
関数名 | previous_posts_link() |
用途 | 複数ページに分かれた投稿一覧で、「前のページ(新しい投稿一覧)」へのリンクを表示 |
表示条件 | 2ページ目以降(最初のページでは非表示) |
引数 | $label (表示するテキスト) |
出力形式 | HTML <a> タグ(echoされる) |
関連関数 | next_posts_link() , posts_nav_link() , paginate_links() |
previous_posts_link()
は、WordPressのページネーションの中でも**「時系列順に投稿をナビゲートしたいとき」**に便利な関数です。
特にシンプルなブログテーマや、上下移動するタイプの一覧表示において活用されることが多いです。
ただし、より柔軟なレイアウトやページ番号表示が必要な場合は、paginate_links()
や the_posts_pagination()
への移行も検討してみてください。