【WordPress】single.phpで投稿の前(次)の記事を複数表示

1,704
wordpress archive

single.phpで前後記事へのリンクを表示

WordPressでは、single.phpに前後記事へのリンクを設置することが多くあります。

次の記事

<?php next_post_link(); ?>

前の記事

<?php previous_post_link(); ?>

 

今回はこの前後の記事を複数表示させる方法です。

前後の記事を複数表示

例えば、表示している投稿の前の記事を5件表示したい、といった場合に使用できます。
以下は、表示している投稿より前の記事を5件表示します。


<ul>
<?php $postdete = get_post_time('Ynd'); ?>
<?php query_posts( array('posts_per_page'=>-1,'order'=>'DESC','orderby'=>'date') ); ?>
<?php if ( have_posts() ) :     while ( have_posts() ) :         the_post(); ?>
<?php if($postdete > get_post_time('Ynd')):
$counter++;
if ($counter < 6): ?>

<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>

<?php endif; ?>
<?php endif; ?>
<?php     endwhile; endif; wp_reset_query(); ?>
</ul>

解説

この部分で表示している投稿の日付を$postdeteに格納します。

<?php $postdete = get_post_time('Ynd'); ?>

query_postsでは全件表示を指定しておいて、この部分で表示している投稿より古い投稿という条件を指定します。
また、表示件数を指定するために、$counter++でループ回数をカウントし、6より少ない数という条件を加えます。

<?php if($postdete > get_post_time('Ynd')):
$counter++;
if ($counter < 6): ?>

あとは、ループ内をお好みの内容に変えるだけです。
表示している投稿より新しい記事を複数表示するには、

if($postdete < get_post_time('Ynd')):

というように、比較演算子の部分を変えるだけです。

まとめ

WordPressのテンプレートタグでは表現が難しいものも、自分で用意したPHPと合わせて使用すると実現できますね。
PHPをマスターしていけば、すぐに対応ができるようになるので頑張りたいと思います。

※カスタマイズの際は、必ずバックアップを取ってからお試しください。また、カスタマイズによって動作に問題が生じた場合、当方では責任を負いかねますのでご了承ください。
まだまだ勉強中の身ですのでカスタマイズ方法が正しくない場合があるかもしれません。もしご指摘を頂ければすぐに修正させて頂きます。今後ともご指導・ご鞭撻の程、よろしくお願い致します。