今更ながら。
そもそも
wpには次の記事・前の記事のリンクを生成するタグが存在するので、単純に表示させたいだけならそれでいい。カスタマイズ性もあるので好みでいじればいい。導入は検索すればゴロゴロ出てくる。
ちょっとマニアックな感じで、wpで用意されたフォーマットに縛られず、例えばカスタムフィールドを付けたいとかコンテンツの構成を変えたいとか、そういう話になってきたら面倒なことになる。
それをやっていく。
やる
前後の記事情報はそれぞれ直接ぶっこ抜くことになるので変数化。加えて、両方が存在しなければ枠自体表示しなくていい(=片方があれば表示する)ってことで大枠はこんな感じになる。
<?php
$postPrev = get_previous_post();
$postNext = get_next_post();
if($postPrev || $postNext):
?>
中身
<?php endif; ?>
それで、こう。
<?php
$postPrev = get_previous_post();
$postNext = get_next_post();
if($postPrev || $postNext):
?>
<ul>
<?php if ($postPrev): ?>
<li class="prev"><a href="<?php echo get_the_permalink( $postPrev->ID ); ?>" rel="prev"><?php echo get_the_title($postPrev->ID); ?></a></li>
<?php endif; ?>
<?php if ($postNext): ?>
<li class="next"><a href="<?php echo get_the_permalink( $postNext->ID ); ?>" rel="next"><?php echo get_the_title($postNext->ID); ?></a></li>
<?php endif; ?>
</ul>
<?php endif; ?>
それぞれ存在するなら表示の条件を噛ませて投稿内容をIDを指定して出力。
使い回しが効く分コピペからの修正漏れがあるんで、それぞれの変数を間違えないように注意。
「echo get_the_permalink()」じゃなくて「the_permalink()」でもいけるんだけどこれはわざと。というのが、「the_title()」にIDを入れてもダメっていう点から。混ぜたらわからなくなるのでechoで出力するように統一してある。
当然の話だけどカスタムフィールドも同様にIDを指定することで出力できる。
<?php echo SCF::get('example',$postPrev->ID); ?>
書いておいて今更ながら、投稿IDの記述も変数にしたほうが楽だったかもしれない。
single.phpであれば使える
この記述はsingle.phpであれば無条件で使える。標準の投稿でもカスタム投稿でも大丈夫。
コメント