MENU

adjacent_post_link()

adjacent_post_link() は、WordPress の投稿ページで「前の記事」「次の記事」へのリンクを表示するためのテンプレートタグです。

ブログ記事のナビゲーションを改善し、ユーザーの回遊率を高めるために使用されます。この関数を使うことで、同じカテゴリー内の記事のみを対象にしたり、リンクのテキストをカスタマイズすることも可能です。

目次

機能の説明

adjacent_post_link() は、現在表示されている記事の前後の記事へのリンクを出力する関数です。主に投稿ページ(single.php)内で使用され、ユーザーが過去または新しい記事へ簡単に移動できるようになります。
この関数は次のような場面で活用できます。

  • 記事ページのフッターに「前の記事」「次の記事」リンクを追加
  • 特定のカテゴリー内での前後の投稿リンクを制御
  • カスタム HTML やカスタムテキストを含むナビゲーションリンクを作成

シンプルなコード例

<?php adjacent_post_link(); ?>

このコードを single.php に追加すると、デフォルトの設定で前後の記事のリンクが表示されます。

  • 前の記事(新しい記事へ戻る)
  • 次の記事(過去の記事へ進む)

ただし、デフォルトでは « %link または %link » の形式で出力されるため、カスタマイズが必要になる場合があります。

使い方の説明

基本の使い方

adjacent_post_link() には、以下のような引数を指定できます。

<?php adjacent_post_link('%link', '« %title'); ?>
<?php adjacent_post_link('%link', '%title »', false); ?>

引数の説明

  1. '%link':リンクの HTML テンプレート。デフォルトは « %link または %link »
  2. '%title':リンクの表示テキスト。%title は記事タイトルに置き換えられる
  3. true または falsetrue の場合、現在の記事と同じカテゴリー内で前後の記事を取得する

デザインを適用した例

HTML を含めたナビゲーションデザインを作成する場合は以下のように記述します。

<div class="post-navigation">
    <div class="nav-previous">
        <?php adjacent_post_link('%link', '« %title', true); ?>
    </div>
    <div class="nav-next">
        <?php adjacent_post_link('%link', '%title »', false); ?>
    </div>
</div>
  • <div class="post-navigation">:全体のナビゲーションを囲む
  • <div class="nav-previous">:前の記事のリンクを表示
  • <div class="nav-next">:次の記事のリンクを表示
  • CSS で .post-navigation をスタイルすればデザインを調整可能

一緒に使うことが多い関連タグ

previous_post_link()

前の記事へのリンクを表示する。

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

next_post_link()

次の記事へのリンクを表示する。

<?php next_post_link('%link', '%title »'); ?>

get_adjacent_post()

前後の投稿を取得する(出力はしない)。

<?php 
$previous_post = get_adjacent_post(false, '', true);
if ($previous_post) {
    echo '<a href="' . get_permalink($previous_post) . '">' . get_the_title($previous_post) . '</a>';
}
?>

追加情報で取得したい場合

前後の記事の情報を取得する

get_adjacent_post() を使用すると、前後の記事の情報を取得できます。

<?php
$prev_post = get_adjacent_post();
$next_post = get_adjacent_post(false, '', false);

if ($prev_post) {
    echo '<a href="' . get_permalink($prev_post) . '">' . get_the_title($prev_post) . '</a>';
}

if ($next_post) {
    echo '<a href="' . get_permalink($next_post) . '">' . get_the_title($next_post) . '</a>';
}
?>
  • get_adjacent_post(false, '', true):前の記事の情報を取得
  • get_adjacent_post(false, '', false):次の記事の情報を取得

想定されるトラブル

特定のカテゴリー内でしか前後の記事が表示されない

解決方法

引数の3番目に false を指定する。

<?php adjacent_post_link('%link', '« %title', false); ?>
  • true の場合 → 同じカテゴリー内の投稿のみ 取得
  • false の場合 → 全ての投稿を対象 にする

前後の記事がない場合にエラーになる

解決方法

前後の記事が存在するか確認してから表示する。

<?php if (get_adjacent_post(false, '', true)) {
    adjacent_post_link('%link', '« %title', true);
} ?>

Q&A

adjacent_post_link() はどこで使うべきですか?

single.php(投稿ページ)で使うのが一般的です。

前後の記事がない場合にエラーが出ます。どうすればいいですか?

get_adjacent_post() を使用して、記事があるか確認してから表示してください。

カスタム投稿タイプでも使えますか?

adjacent_post_link() はデフォルトでは post で動作しますが、get_adjacent_post() を使えばカスタム投稿タイプにも対応できます。

まとめ

adjacent_post_link() は、前後の記事へのリンクを簡単に表示できる便利なテンプレートタグです。

  • 基本的な記事ナビゲーションを提供
  • カテゴリーごとのナビゲーションも可能
  • previous_post_link()next_post_link() との併用も有効
  • カスタマイズ次第でデザインを自由に変更可能

シンプルなブログサイトからカスタマイズ性の高いテーマまで、幅広く活用できる関数です。

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

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次