previous_posts_link()

previous_posts_link()
目次

previous_posts_link()とは?

previous_posts_link() は、投稿一覧ページやアーカイブページにおいて、「前のページ(より新しい投稿一覧)」へのリンクを表示する関数です。

一覧ページは複数の投稿をページ送り(ページネーション)で分割表示しており、この関数は「今見ているページの前のページ」へ戻るためのリンクを出力します。

previous_posts_link()の用途まとめ

  • 投稿一覧(トップページ、カテゴリ、タグ、アーカイブページ)で使用
  • 複数ページにわたる投稿を、前ページに戻るリンクを表示
  • 通常、ページ番号順ではなく「時系列順」に並んでおり、「前ページ」はより新しい投稿群

previous_posts_link()の基本構文

previous_posts_link( string $label = null )

previous_posts_link()の引数の解説

引数説明
$labelstring表示するリンクテキスト(例:「« 新しい記事」)

省略した場合は 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() への移行も検討してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

初めてホームページを作成したのは1996年。
2000年よりフリーランスで主に中小企業、学校、各種公的団体、個人事業主のWordPressを活用したホームページ制作を行っています。WordPressテーマはそれぞれのクライアントに合わせて作成しています。
WordPressを活用したサイト運営のための情報発信をしていきます。

目次