wordpress 個別ページで前後の投稿にリンクする関数

2013年4月25日

個別ページで前後の投稿へのリンクを出力するには、以下の関数を利用できる。

previous_post_link/next_post_link 関数

  • パラメータ:フォーマット、リンク、同一カテゴリー限定、除外カテゴリー
  • 戻り値:なし
  • 利用可能箇所:投稿の個別ページのテンプレート(single.php)

パラメータを一切指定しない場合

  • 「« 前の投稿」「次の投稿 »」のような文字列(リンク先のタイトルを表示)を出力し、その部分を前後の投稿へのリンクにする。
  • 「«」「 »」は文字実態参照の「«」「»」(単なる文字列)
  • 「前の投稿」「次の投稿」の部分は、「実際の投稿のタイトル」がリンクとして表示される。

出力形式を指定する場合

1つ目のパラメータと2つ目のパラメータを指定する。

フォーマット(1つ目のパラメータ)
出力全体の書式を指定
「%link」というキーワードでリンク部分を表すことができる
リンク(2つ目のパラメータ)
リンク部分の文字列の書式(内容)を指定
「%title」(投稿のタイトル)、「%date」(投稿の日付)というキーワードが使える

1つ目のパラメータの「%link」という部分に、2つ目のパラメータの内容が入り、その部分がリンクとして表示される。

<?php previous_post_link('&laquo; 前へ : %link', '%title (%date)'); ?>

「« 前へ:投稿のタイトル(投稿の日付)」と出力される。

「« 前へ:」部分は単なる文字列
「投稿のタイトル(投稿の日付)」部分は「%title (%date)」に対応したリンクが出力される。

例:« 前へ : タイトル1(2012年12月31日)

リンクを画像で表示する例(1つ目のパラメータに「%link」を指定し、2つ目のパラメータに画像を指定)

<?php previous_post_link('%link', '<img src="'. get_template_directory_uri(). '/images/prev.png" alt="前" width="35" height="69" />'); ?>

リンクの前に「矢印の画像」を挿入する例(1つ目のパラメータの「%link」の前に画像を指定し、2つ目のパラメータに投稿のタイトルを指定)

<?php previous_post_link('<img src="'. get_template_directory_uri(). '/images/arrow_left-trans.png" alt="前" width="10" height="10" /> %link', ' %title '); ?>

同一カテゴリー内の投稿に限定する場合

3つ目のパラメータを「true」に指定すると、現在の投稿と同じカテゴリーの中で、前後の投稿へのリンクを出力する(デフォルト(指定なし)または「false」を指定すれば、ブログ全体を通して時系列順に前後の記事へのリンクを出力する)。

但し、カスタムタクソノミー(の個別ページ)の場合、このパラメータを「true」に指定すると機能しない(表示されない)。(参考:next_post_link (カスタムタクソノミーの同一カテゴリー)

また、3つ目のパラメータを「true」に指定する場合、1つ目と2つ目のパラメータは省略できない。

全てのパラメータを省略した場合と同様の出力にして、かつ同じカテゴリーの中でのリンクにするには次のように1つ目と2つ目のパラメータにデフォルトの値を指定する。

<?php previous_post_link('&laquo; %link', '%title', true); ?>
<?php next_post_link('%link &raquo;', '%title', true); ?>

特定のカテゴリーを除外する場合

4つ目のパラメータで、除外するカテゴリーの ID を指定する。

例:ID が70番のカテゴリーを除外する場合

<?php previous_post_link('&laquo; %link', '%title', false, '70'); ?>

複数のカテゴリーを除外するには、カテゴリーID の間に「 and 」(and の前後は半角スペース)を入れ、前後を「’」(シングルクォート)で囲む

例:IDが1番、3番、5番のカテゴリーを除外する場合

<?php next_post_link('%link &raquo;', '%title', false, '1 and 3 and 5'); ?>

以下は「矢印の画像(リンクはつけない)」と同一カテゴリーのタイトル(リンク)を出力する例。

<p class="fLeft"><?php previous_post_link('<img src="'. get_template_directory_uri(). '/images/arrow_left.png" alt="前" width="10" height="10" /> %link', ' %title ', TRUE); ?></p>
<p class="fRight"><?php next_post_link('%link <img src="'. get_template_directory_uri(). '/images/arrow.png" alt="次" width="10" height="10" />', '%title ', TRUE); ?></p>

書式

next_post_link($format, $link, $in_same_cat, $excluded_categories)
previous_post_link($format, $link, $in_same_cat, $excluded_categories)
個別記事で前後のページへのパーマリンクを表示する。(日付順)

パラメータ(全てオプション)

 $format (文字列) フォーマット:
出力全体(a 要素を含めた全体)の書式を指定。「%link」というキーワードで a 要素全体を表すことができる。
デフォルト: '%link &raquo;'
 $link (文字列) リンク:
リンクの文字列(a 要素の内部)の書式(内容)を指定。「%title」(投稿のタイトル)、「%date」(投稿の日付)というキーワードが使える。
デフォルト:'%title' (投稿のタイトル)
 $in_same_cat (論理値)同一カテゴリー限定:
3つ目のパラメータを「true」に指定すると、現在の投稿と同じカテゴリーの中で、前後の投稿へのリンクを出力する。
デフォルト:0 (false)
 $excluded_categories (文字列または配列) 除外カテゴリー:
4つ目のパラメータで、除外するカテゴリーの ID を指定すると、そのカテゴリーの投稿を除外することができる。
デフォルト:なし

戻り値:なし