個別ページで前後の記事へリンクする方法です。固定ページは不可。previous_post_link()
/ next_post_link()
の説明ですが、WP4.1〜より便利なthe_post_navigation()
が実装されています。
WP4.1〜は、the_post_navigation()が便利
仕様
<?php previous_post_link( $format, $link, $in_same_term, $excluded_terms, $taxonomy ); ?>
<?php next_post_link( $format, $link, $in_same_term, $excluded_terms, $taxonom ); ?>
パラメータ | 初期値 | 説明 |
format | « %link %link » | リンクの文字列 |
link | %title | 表示するリンクのテキスト |
in_same_term | false | trueにすると同じターム内が対象となる |
excluded_terms | (空) | 表示させたくないタームIDを指定する。 複数指定する場合は、配列かカンマ区切りで行う |
taxonomy | category | タクソノミーの名前を指定。 ‘in_the_same_term’がtrueの場合のみ有効。 |
初期値
<?php previous_post_link( '« %link', '%title', false, '' ); ?>
<?php next_post_link( '%link »', '%title', false, '' ); ?>
get_previous_post(), get_next_post()も同様ですが出力しないため、echoが必要になります。
標準のコードと出力されるHTML
<?php previous_post_link(); ?>
<?php next_post_link(); ?>
« <a href="https://example.com/2012/01/07/template-sticky/" rel="prev">記事タイトル</a>
<a href="https://example.com/2012/03/14/template-excerpt-generated/" rel="next">記事タイトル</a> »
タイトルの無いエントリーの場合、「過去の投稿へ」「次の投稿へ」となります。
カスタム例と出力内容
※翻訳関数は省略しています・・・
サンプルで使っているCSS
.post-navigation {
display: table;
width: 100%;
padding: 8px 0;
font-size: 1.4rem;
}
.post-navigation .nav-links {
display: table-row;
width: 100%;
word-break: break-all;
}
.post-navigation .nav-links .nav-previous {
display: table-cell;
width: 50%;
padding-right: 48px;
text-align: left;
}
.post-navigation .nav-links .nav-next {
display: table-cell;
width: 50%;
padding-left: 48px;
text-align: right;
}
クラス名は自由につけることができます。
表示文字列を変更する
文字の変更
<?php previous_post_link( '%link', '< 前のエントリー' ); ?>
<?php next_post_link( '%link', '次のエントリー >' ); ?>
htmlタグも使える
<?php previous_post_link( '%link', '<i class="fa fa-chevron-circle-left"></i>' ); ?>
<?php next_post_link( '%link', '<i class="fa fa-chevron-circle-right"></i>' ); ?>
矢印にもリンクを貼る
1行目のデフォルト状態から、2行目のように矢印の位置を2つ目の引数に移動
<?php previous_post_link( '« %link', '%title' ); ?>
<?php previous_post_link( '%link', '« %title' ); ?>
前後の記事がない場合に、空のDIVタグを表示しない
<div class="post-navigation">
<div class="nav-links">
<?php if ( get_previous_post() ) : ?>
<div class="nav-previous"><?php previous_post_link(); ?></div>
<?php endif; ?>
<?php if ( get_next_post() ) : ?>
<div class="nav-next"><?php next_post_link(); ?></div>
<?php endif; ?>
</div>
</div>
同じカテゴリーを対象とする
3つめの引数をtrue
にする。
<?php previous_post_link( '« %link', '%title', 'true' ); ?>
<?php next_post_link( '%link »', '%title', 'true' ); ?>
同じタグがついた投稿を対象とする
3つめの引数をtrue
にし、5つめでpost_tag
を指定する
<?php previous_post_link( '« %link', '%title', 'true' ); ?>
<?php next_post_link( '%link »', '%title', 'true' ); ?>
Codex
- previous_post_link(), next_post_link() WP1.5〜
- get_previous_post(), get_next_post() WP1.5〜
- the_post_navigation() WP4.1〜
- get_the_post_navigation() WP4.1〜