ブログなどで記事を投稿した際に表示される新着記事一覧をサイドバーに設置させる方法を紹介します。今回はどのページでも表示されるように設定をします。もちろん、条件分岐を利用して特定のページのみに表示させることも可能です。例えば、トップページが常に新しい記事が表示されるような作りのサイトの場合には、サイドバーに新着記事一覧があっても同じリンクが表示されるだけであまり意味がないので、トップページのサイドバーには表示させないといった設定をしても良いかもしれません。
新着記事一覧を作る
まずは、新着記事一覧を表示させるためのマークアップをします。今回はsidebar.phpに記述していきます。
<h2>最近の記事</h2>
<ul>
<li><a href="記事へのリンク">記事タイトル</a></li>
</ul>
このような感じで見出しとリストでマークアップしました。それでは実際に新着順に記事を表示させるための設定を行っていきます。今回は、新しい記事を5件表示させる設定にします。
<?php
$newposts = get_posts( array(
'post_type' => 'post',
'posts_per_page' => '5'
));
if( $newposts ): ?>
<h2>最近の記事</h2>
<ul>
<?php foreach($newposts as $post):
setup_postdata($post); ?>
<li><a href="<?php the_permalink(); ?>">
<?php the_title(); ?>
</a></li>
<?php endforeach; ?>
</ul>
<$php wp_reset_postdata();
endif; ?>
このようにすると、サイドバーに新着記事が5件表示されます。それでは少し内容を見ていきます。
まずは、「get_posts()」の中に出力する条件を設定します。投稿された記事を5件だけ出力するという条件となっています。そして、「foreach(サブループ)」を利用して指定した条件と一致したデータを読み込んで処理を実行することで実際に記事が出力されます。出力させている内容は記事タイトルと記事へのリンクだけです。
「<?php the_title(); ?>」と「<?php the_permalink(); ?>」のテンプレートタグを使ってそれぞれタイトルとリンクを出力しています。
テンプレートタグを使って表示する方法
この他に新着記事を表示させる方法として、「wp_get_archives()」というテンプレートタグを使って表示させる方法があります。このテンプレートタグはデフォルトでは月別のアーカイブが表示されますが、「postbypost」という値を指定することで最近の記事を出力することができるようになります。
<ul>
<?php
$newposts = array(
'type' => 'postbypost',
'limit' => 5
);
wp_get_archives($newposts);
?>
</ul>
「wp_get_archives()」はデフォルトでは<li>形式のHTMLで出力されるので、<ul>タグで囲って指定をします。「type」というパラメータに「postbypost」を指定して最近の記事を出力するようにし、「limit」というパラメータを使って表示件数を指定します。この場合では、最近の記事を5件表示する指定となります。デフォルトでは無限に表示されます。
以上が新着記事一覧を表示させる方法となります。あとはCSSで体裁を整えれば完成となります。