previous_post_link()

previous_post_link()
目次

previous_post_link()とは?

previous_post_link() は、現在表示されている投稿(シングルページ)よりも公開日が「新しい」投稿(時系列的に前の投稿)へのリンクを表示するための関数です。

WordPress の記事一覧は通常「新しい順」で表示されますが、この関数は**「投稿順の前後関係」に基づいたナビゲーション**を提供します。

previous_post_link()の基本構文

previous_post_link( string $format = '%link', string $link = '« 前の記事', bool $in_same_term = false, array|string $excluded_terms = '', string $taxonomy = 'category' )

previous_post_link()の引数の詳細

引数名内容
$formatstring出力フォーマット(%link にリンクが埋まる)
$linkstringリンク部分のテキストまたは HTML
$in_same_termbool同一カテゴリーまたはタクソノミー内に限定するか
$excluded_termsarraystring
$taxonomystring使用するタクソノミー(デフォルトは category

previous_post_link()の使い方の例

最もシンプルな使用方法

<?php previous_post_link(); ?>

このように記述すると、デフォルトの「« 前の記事」リンクが表示されます。

カスタマイズしたリンクテキストを表示する

<?php previous_post_link('%link', '← %title'); ?>

このように %title を使うことで、「← 記事タイトル」という形式で表示できます。

HTMLを含んだ出力にする

<?php previous_post_link('<div class="prev-link">%link</div>', '<i class="icon-left"></i> %title'); ?>

出力例(HTML):

<div class="prev-link">
  <a href="https://example.com/post-1"><i class="icon-left"></i> 前の記事タイトル</a>
</div>

カテゴリー内だけで前後を制限する

<?php previous_post_link('%link', '← %title', true); ?>

このように第3引数を true にすることで、同じカテゴリー内の投稿に限定したナビゲーションが表示されます。

特定カテゴリを除外する

<?php previous_post_link('%link', '← %title', false, array(3, 7)); ?>

ここではカテゴリID「3」「7」の投稿を除外しています。

タクソノミーを指定する

カスタムタクソノミー genre で同一用語内に限定したい場合:

<?php previous_post_link('%link', '← %title', true, '', 'genre'); ?>

next_post_link() との違い

関数名移動先意味
previous_post_link()公開日が「新しい」投稿(時系列的に前)通常「新しい記事」
next_post_link()公開日が「古い」投稿(時系列的に後)通常「古い記事」

よくある誤解

  • 名前に「previous」とあるので「古い記事」へのリンクかと思われがちですが、時系列上の「前」=新しい記事 です。
  • WordPressの「次」と「前」は投稿の公開日時が基準になります。

HTMLとCSSによる装飾

<div class="post-navigation">
  <div class="prev-post">
    <?php previous_post_link('%link', '← %title'); ?>
  </div>
  <div class="next-post">
    <?php next_post_link('%link', '%title →'); ?>
  </div>
</div>

CSS例:

.post-navigation {
  display: flex;
  justify-content: space-between;
  margin: 2em 0;
}
.prev-post a, .next-post a {
  background: #f5f5f5;
  padding: 10px 15px;
  text-decoration: none;
  color: #333;
}

応用:リンクが存在する時だけ表示

<?php if ( get_previous_post() ) : ?>
  <div class="prev-post">
    <?php previous_post_link('%link', '← %title'); ?>
  </div>
<?php endif; ?>

このようにすることで、「前の記事」が存在しない場合は空欄になります。

get_previous_post() と併用する

より柔軟なカスタマイズがしたい場合は、get_previous_post() でオブジェクトを取得して独自リンクを構成できます。

<?php
$prev_post = get_previous_post();
if ( !empty($prev_post) ) {
  echo '<a href="' . get_permalink($prev_post->ID) . '">← ' . esc_html(get_the_title($prev_post->ID)) . '</a>';
}
?>

よくある注意点

注意点内容
投稿が最初の記事だった場合前の記事がないため、リンクは出力されない
カスタム投稿タイプでの使用taxonomy の指定が必要な場合がある
カテゴリー制限をかけると該当する前の記事が見つからない場合、リンクが表示されない

まとめ

項目内容
関数名previous_post_link()
用途単一記事ページで「時系列的に前の投稿(新しい記事)」へのリンクを表示
出力内容HTMLリンク(テキストまたはカスタムHTML)
特徴同一カテゴリー・除外ターム・カスタムタクソノミー対応可能
対応関数next_post_link()(次の投稿) / get_previous_post()(オブジェクト取得)

previous_post_link() は、WordPress のシングル投稿ページに投稿同士のつながりを持たせ、回遊性を高める重要な関数です。
特にブログ形式やコラム記事、ニュース系のサイトでは、ユーザーに連続して記事を読んでもらう導線として欠かせません。

必要に応じて next_post_link()get_previous_post() などと組み合わせて、より柔軟なナビゲーションを設計してみてください。

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

この記事を書いた人

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

目次