WordPress 最新記事一覧の表示方法
最終更新日 - 公開日 2016.12.25
by
WordPress で最新記事一覧を表示する方法を紹介します。
例えば、トップページやサイドバーに最新記事一覧を表示したい時に便利な方法です。
最新記事を表示するには?
WordPress で最新記事を表示するには WP_Query
や get_posts
などを使用します。
この記事では、比較的簡単に実装できる get_posts
を使った表示方法を紹介します。
例えば表示をカスタマイズしたい場合。一度に複数の記事一覧を表示したい場合。アイキャッチ画像を表示したいなどは、姉妹記事のWordPress 基本的なループの表示方法を紹介で紹介している WP_Query
を使ったサブループの表示方法ご覧ください。
最新の投稿5件を表示する方法
最新の投稿5件をリンク付きタイトル一覧で表示方法を紹介します。
次のコードを最新記事一覧を表示させたいテンプレートに追加してください。
<ul>
<?php
$args = array(
'posts_per_page' => 5 // 表示件数の指定
);
$posts = get_posts( $args );
foreach ( $posts as $post ): // ループの開始
setup_postdata( $post ); // 記事データの取得
?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php
endforeach; // ループの終了
wp_reset_postdata(); // 直前のクエリを復元する
?>
</ul>
最新記事一覧の後に、もともと表示していた記事を表示する場合は、wp_reset_postdata
を追加することで直前の記事を復元することができます。
wp_reset_postdata とは?
wp_reset_postdata 関数は new WP_Query を使用して、二番目のクエリを実行後、メインクエリ( $post グローバル変数)を復元します。投稿の順番がおかしい時などは、これらのクエリの制御がおかしい場合に発生します。不具合が起きた場合は、クエリが正しくリセットされているかなどを確認してください。
表示件数を変更したい
表示件数を調整したい場合は posts_per_page
の値を編集します。
例えば、最新記事を3件表示したい場合は、 サンプルコード内の 'posts_per_page' => 5
の数字を変更します。
-- 省略 --
'posts_per_page' => 3 // 表示件数の指定
-- 省略 --
カテゴリーでソートしたい
カテゴリーでソートしたい場合 category
を使います。
例えば、カテゴリーIDが1のカテゴリーでソートしたい場合は次のコードを追加します。
-- 省略 --
$args = array(
'posts_per_page' => 5, // 表示件数の指定
'category' => 1 // カテゴリーID 1 のカテゴリーを指定
);
-- 省略 --
カテゴリーのIDを調べるには、管理画面でカテゴリーの詳細ページの URL に ID の指定を見つけることができます。
表示がうまくいかない場合
最新記事一覧が表示されない場合、表示件数指定の記載などで「,(カンマ)」が抜けている場合があります。
取得条件が一つなら次のようになります。
-- 省略 --
$args = array(
'posts_per_page' => 5 // 取得の条件が一つなら「,(カンマ)」は不要
);
-- 省略 --
取得条件が複数の時は次のようになります。
-- 省略 --
$args = array(
'posts_per_page' => 5, // 最後以外は「,(カンマ)」が必要
'category' => 1 // 最後は不要
);
-- 省略 --
表示されない原因は「,(カンマ)」の見落としが多いので注意してください。
投稿にカスタム投稿を含める場合
投稿にカスタム投稿を含める場合は、メインクエリをカスタマイズする必要があります。
例えば、投稿にカスタム投稿(blog)を含める場合は、次のコードを function.php に追加します。
/* 【出力カスタマイズ】メインクエリーをカスタマイズ */
add_action( 'pre_get_posts', 'foo_modify_main_queries' );
function foo_modify_main_queries ( $query ) {
if ( ! is_admin() && $query->is_main_query() ) { // 管理画面以外かつメインクエリーを対象とする
if ( $query->is_home() ) {
$query->set( 'post_type', array('post','blog')); // 投稿とカスタム投稿(blog)を含める
}
}
}
カスタム投稿を複数追加する場合は array('post','blog'))
の部分を array('post','blog','news'))
などに編集してください。
最新記事に New マークを表示する方法
最新記事に New マークを表示したい時は、姉妹記事「WordPress 新着記事に New マークを表示する方法」をご覧ください。
まとめ
WordPress で最新記事一覧を表示する方法を紹介しました。
「カスタム投稿タイプで表示したい」「タクソノミーでソートしたい」「アイキャッチ画像を表示したい」など、細かくカスタマイズしたい場合は WP_Query
を使った表示方法がおすすめです。
WP_Query
を使った表示方法は姉妹記事のWordPress 基本的なループの表示方法を紹介で詳しく紹介しています、こちらも合わせてご確認ください。