
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()の引数の詳細
引数名 | 型 | 内容 |
---|---|---|
$format | string | 出力フォーマット(%link にリンクが埋まる) |
$link | string | リンク部分のテキストまたは HTML |
$in_same_term | bool | 同一カテゴリーまたはタクソノミー内に限定するか |
$excluded_terms | array | string |
$taxonomy | string | 使用するタクソノミー(デフォルトは 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()
などと組み合わせて、より柔軟なナビゲーションを設計してみてください。