トップページに設置することが多い『新着記事 ○件』といった形式の記事一覧の設定方法を解説していきいます。
もくじ
テンプレートタグ get posts を使う
トップページに新着記事を希望する件数(5件、10件など)表示する方法をご紹介します。
具体的なソース例は テンプレートタグ/get posts WordPress Codex 日本語版 で紹介されています。
今回ベースとなるコード:最近の投稿をタイトル順に並べる(引用)
アルファベット順に昇順で最近の 10 件を表示するには、以下のコードで投稿日、タイトル、抜粋を表示します。
※見やすいように一部改行しています。
<?php
$args = array(
'posts_per_page' => 10,
'order' => 'ASC',
'orderby' => 'title'
);
$postslist = get_posts( $args );
foreach ( $postslist as $post ) :
setup_postdata( $post ); ?>
<div>
<?php the_date(); ?>
<br />
<?php the_title(); ?>
<?php the_excerpt(); ?>
</div>
<?php
endforeach;
wp_reset_postdata();
?>
それではこのコードをカスタマイズして、『新着記事を5件表示』する形式にしてみましょう。
ステップ1:最近の投稿を日付順にする
日付順に表示するには orderby の値を変更します。 'title'から'date' に変えます。
$args = array(
'posts_per_page' => 10,
'order' => 'ASC',
'orderby' => 'date'
);
ステップ2:表示件数を変える
表示件数を変えるには posts_per_page の数値を変更します。 5件表示にしたいので '10' を '5' に変えます。
$args = array(
'posts_per_page' => 5,
'order' => 'ASC',
'orderby' => 'date'
);
ステップ3:昇降順を変える
表示する順番を変えるのは order の値を変更します。
昇順(小さい値から大きい値)なら ASC 、降順(大きい値から小さい値)なら DESC とします。
今回は最新の日付から順番に表示したいので DESC とします。
$args = array(
'posts_per_page' => 5,
'order' => 'DESC',
'orderby' => 'date'
);
ステップ4:投稿へのリンクを設定する
タイトルを出力するthe_title() がループの中にあるので、the_permalink タグを利用しリンクに変更します。このタグは投稿のURLを出力します。
テンプレートタグ/the permalink【WordPress Codex 日本語版】
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
まとめ
変更点を反映させた『新着記事を5件表示』するコードはご覧のとおりです。
<?php
$args = array(
'posts_per_page' => 5,
'order' => 'DESC',
'orderby' => 'date'
);
$postslist = get_posts( $args );
foreach ( $postslist as $post ) :
setup_postdata( $post ); ?>
<div>
<?php the_date(); ?>
<br />
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php the_excerpt(); ?>
</div>
<?php
endforeach;
wp_reset_postdata();
?>