WordPress 投稿ページのページ送り

  Code Tips minimum Theme

投稿ページにページ送り「前の記事」と「次の記事」のリンクを付けてみます。

 

previous_post_link() と next_post_link()

「前の記事」は previous_post_link() 、「次の記事」は next_post_link() を使います

 

previous_post_link()

個別投稿ページで「前の記事」のリンクを表示します。

このテンプレートタグは、現在の投稿から見て日付順でひとつ前の投稿へのリンクを表示します。個別投稿のパーマリンクページで使用します。

WordPress Codex : テンプレートタグ/previous post link

 

previous_post_link( $format, $link, $in_same_term, $excluded_terms, $taxonomy )

 

next_post_link()

個別投稿ページで「次の記事」のリンクを表示します。

このテンプレートタグは、現在の投稿から見て日付順で次の投稿へのリンクを表示します。個別投稿のパーマリンクページで使用します。

WordPress Codex : テンプレートタグ/next post link

next_post_link( $format, $link, $in_same_term, $excluded_terms, $taxonomy)

 

位置:previous_post_link()・next_post_link()

ループ内

 

パラメータ:previous_post_link()・next_post_link()
引数 説明
$format
文字列
オプション
リンクの文字列の書式。リンクの前後に追加する文字を設定できます。%link と文字列内に表記すると $link (次のパラメータ)に置き換えられます。Go to %link とすると Go to <a href=... となります。スタイルをつけるには HTML タグを入れます。
初期値:'&laquo; %link'
初期値:'%link &raquo;'
$link
文字列
オプション
表示するリンクのテキスト。
初期値:%title – ひとつ前の投稿のタイトル
初期値:%title – 次の投稿のタイトル
$in_same_term
真偽値
オプション
現在の投稿と同じタクソノミー・ターム(例:カテゴリー)の投稿に限定するかどうか。true にすると現在のタクソノミー・タームがついた投稿だけを表示します。
初期値:false
注意: 現在の投稿に 2 つ以上のターム(例:親と子の両方)がついていた場合、どのタームがついた投稿へリンクするかは選べません。
$excluded_terms
文字列/配列
オプション
表示させたくない投稿のターム ID(例:カテゴリー ID)。複数のタームを除外するには配列にするか、コンマで区切ってください(例:array(1, 5) または '1,5')。
初期値: ''
$taxonomy
文字列
オプション
タクソノミー。これは $in_same_termtrue の場合に有効です。(WordPress 3.8 で追加)
初期値: 'category'

 

初期設定での使用

ひとつ前の投稿(投稿の作成日順)へのリンクを、左アンギュラークォート « と投稿タイトルとして表示します。
次の投稿(投稿の作成日順)へのリンクを、そのタイトルと右アンギュラークォート » として表示します。

<?php previous_post_link(); ?> | <?php next_post_link(); ?>

出力は

« 前の投稿のタイトル | 次の投稿のタイトル »

となります。

 

リンクのタイトルを太字にする

作成日順でひとつ前の投稿のタイトルを「strong」タグで囲んで表示します。

<?php previous_post_link('<strong>%link</strong>'); ?> | <?php next_post_link('<strong>%link</strong>'); ?>

出力は

前の投稿のタイトル | 次の投稿のタイトル

となります。

 

同じカテゴリー内で、リンクテキストに投稿タイトルを使わず任意の文字にする

現在の投稿と同じカテゴリー内のひとつ前の投稿へのリンクを、テキストをカスタマイズして表示します。投稿タイトルは入れません。
「Previous in category」というテキストはカスタマイズできます。

<?php previous_post_link('%link', 'Previous in category', TRUE); ?> | <?php next_post_link( '%link', 'Next post in category', TRUE ); ?>

出力は

Previous in category | Next post in category

となります。

 

同じカテゴリー内だが特定のカテゴリーを除外する

13 番(カテゴリー ID の数値)のカテゴリーだけを除外して、同じカテゴリーのひとつ前の投稿へのリンクを表示します。除外したいカテゴリーの番号は自由に変えられます。複数のカテゴリーを除外するには「,」で区切るか配列で指定してください。

Previous in category

<?php previous_post_link('%link', 'Previous in category', TRUE, '13'); ?> | <?php next_post_link('%link', 'Next post in category', TRUE, '13'); ?>

出力は

Previous in category | Next post in category

となります。

 

同じタクソノミー内

同じタクソノミー・ターム内のひとつ前の投稿へのリンクを表示します。投稿フォーマットはタクソノミーのひとつなので、下記の例は同じ投稿フォーマットの次の投稿へリンクします。

<?php previous_post_link('%link', 'Previous post in category', TRUE, ' ', 'post_format'); ?> | <?php next_post_link('%link', 'Next post in taxonomy', TRUE, ' ', 'post_format'); ?>

出力は

Previous post in taxonomy | Next post in taxonomy

となります。

 

Code Tips minimum Theme

previous_post_link()next_post_link() を is_single() のブロックに置きます。

記事タイトルを表示させないかたちで使ってみます。

<?php previous_post_link('%link','&lt; PREVIOUS'); ?> | <?php next_post_link('%link','NEXT &gt;'); ?>

出力は

< PREVIOUS | NEXT >

となります。

 

【index.php】

<!DOCTYPE html>
<html <?php language_attributes(); ?>>
<head>
  <meta charset="<?php bloginfo( 'charset' ); ?>">
  <title><?php wp_title('|', true, 'right'); ?><?php bloginfo('name'); ?></title>
  <?php wp_head(); ?>
</head>
<body>
  <h1><a href="<?php bloginfo('url'); ?>/"><?php bloginfo('name'); ?></a></h1>
  <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
  <?php echo get_the_date(); ?>
 
  <?php if (is_single()) : ?>
  <?php the_title( '<h2>', '</h2>' ); ?>
  <?php the_content(); ?>
  <?php previous_post_link('%link','&lt; PREVIOUS'); ?> | <?php next_post_link('%link','NEXT &gt;'); ?>
  
  <?php elseif (is_home()) : ?>
  <?php the_title( '<h2><a href="' . esc_url( get_permalink() ) . '">', '</a></h2>' ); ?>
  <?php the_content('続きを読む…'); ?>
  
  <?php else : ?>
  <?php the_title( '<h2><a href="' . esc_url( get_permalink() ) . '">', '</a></h2>' ); ?>
  <?php endif; ?>

  <?php endwhile; ?>
  <?php endif; ?>
</body>
</html>