WordPress 最新記事一覧の表示方法

WordPress 最新記事一覧の表示方法

WordPress で最新記事一覧を表示する方法を紹介します。
例えば、トップページやサイドバーに最新記事一覧を表示したい時に便利な方法です。

  1. 最新記事を表示するには?
    1. 最新の投稿5件を表示する方法
    2. 表示件数を変更したい
    3. カテゴリーでソートしたい
  2. 表示がうまくいかない場合
  3. 投稿にカスタム投稿を含める場合
  4. 最新記事に New マークを表示する方法

最新記事を表示するには?

WordPress で最新記事を表示するには WP_Queryget_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 基本的なループの表示方法を紹介で詳しく紹介しています、こちらも合わせてご確認ください。