[wp]次の記事・前の記事リンクの自作

今更ながら。

そもそも

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であれば無条件で使える。標準の投稿でもカスタム投稿でも大丈夫。

コメント

タイトルとURLをコピーしました