WordPressに新着記事の一覧を表示する【get_posts】を使った方法
MENU
  1. HOME
  2. WordPress / カスタマイズ
  3. WordPressに新着記事の一覧を表示する【get_posts】を使った方法

最近の作業実績

  • 2024年04月06日非レスポンシブのサイトをレスポンシブ化いたしました。
  • 2024年04月05日テーマファイルが編集できない不具合を解消いたしました。
  • 2024年04月04日WordPress、テーマ、プラグイン、のバージョンアップを担当いたしました。
  • 2024年04月03日不具合で表示されなくなったサイトを表示される状態まで復旧いたしました。
  • 2024年04月02日お問い合わせフォームを再構築いたしました。
  • 2024年04月01日不具合で表示されなくなったサイトを表示される状態まで復旧いたしました。
  • 2024年03月31日サーバー移管に共に表示されなくなったサイトを表示される状態まで復旧いたしました。
  • 2024年03月30日WordPressの操作方法をサポートいたしました。
  • 2024年03月29日サイドバーに人気記事を表示させる仕組みを導入いたしました。
  • 2024年03月28日テキスト等の簡易な修正を行いました。
  • 2024年03月27日アイキャッチが表示されない不具合を修正いたしました。
  • 2024年03月26日WordPressの操作方法をサポートさせていただきました。
  • 2024年03月25日サイト上で発生していたリンクの不具合を解消いたしました。
  • 2024年03月24日不具合で表示されなくなったサイトを表示される状態まで復旧いたしました。
  • 2024年03月23日WordPress、テーマ、プラグイン、のバージョンアップを担当いたしました。
  • 2024年03月22日WordPressにログインできない不具合を解消いたしました。
  • 2024年03月21日既存サイトにセキュリティ対策を導入いたしました。
  • 2024年03月20日メールフォーム周りで発生していた不具合を解消いたしました。
  • 2024年03月19日記事一覧をカテゴリー単位で表示できる様にカスタマイズいたしました。
  • 2024年03月18日WordPress、テーマ、プラグイン、のバージョンアップを担当いたしました。
  • このエリアには直近の制作実績を一部掲載しております。
  • 制作実績はリアルタイム反映ではありません。

WordPressに新着記事の一覧を表示する【get_posts】を使った方法

この投稿は2020/05/25に加筆修正いたしました。
Wordpressでサイトを制作していると、投稿などの新着情報を表示させる機会がすごく多いです。
いちいち調べるのは大変なので、よく使うコードをまとめてみました。

WordPressの新着情報を表示する場合、【get_posts】を使います。
query_postsを使う方法もありますが、個人的にお奨めはしません。

初めて新着情報の表示に挑戦される方は、【get_posts】一択で良いかと思います。
その他の方法は、【get_posts】の使い方を身につけた後で、興味があれば調べてみましょう。

今回は、【get_posts】を使って、新着情報を取得する方法をご紹介していきます。
この記事は約 20 分で読めます。

新着情報を取得する基本コード

最初に基本となるコードをご紹介します。
新着情報を表示させたい場所に、以下のコードをコピペしてください。

<?php
$information= get_posts( array(
//ここで取得条件を指定する
));
if( $information):
?>
<ul>
<?php
foreach( $information as $post ):
setup_postdata( $post );
?>
<li>
<?php the_time('Y年n月j日'); ?> - <a href="<?php the_permalink(); ?>"> <?php the_title(); ?></a>
</li>
<?php
endforeach;
wp_reset_postdata();
?>
</ul>
<?php else: ?>
<p>表示できる情報はありません。</p>
<?php endif; ?>

上記のコードは、新着情報を以下の形式で出力します。

<li>xxxx年xx月xx日 - 記事タイトル</li>
<li>xxxx年xx月xx日 - 記事タイトル</li>
<li>xxxx年xx月xx日 - 記事タイトル</li>
<li>xxxx年xx月xx日 - 記事タイトル</li>
<li>xxxx年xx月xx日 - 記事タイトル</li>

新着情報がひとつも無い場合は【表示できる情報はありません。】と表示されます。

表示させる文章は自由に変更できます。

上記コードの下部にある【表示できる情報はありません。】部分を投稿がないときに表示させたい文章を置き換えてください。HTMLやPHPを記述することも可能です。

上記のコードが、新着情報を表示させる基本のコードとなります。

様々な条件で新着情報を取得してみよう

先ほどの基本となるコードの【//ここで取得条件を指定する】部分を編集することで、さまざまな条件で新着情報の一覧を表示できるようになります。

様々な条件を加えてで新着情報を表示する方法をご紹介していきます。

最初に以下でご紹介する条件をまとめておきます。
解説がなくても分かる方が、こちらのまとめをご覧ください。

条件コード
件数指定‘posts_per_page’ => 取得する件数
カテゴリ指定単体:’category’ => ‘カテゴリID’
複数:’category’ => ‘カテゴリID, カテゴリID’
カテゴリ除外単体:’category’ => ‘-カテゴリID’
複数:’category’ => ‘-カテゴリID, -カテゴリID’
タグ指定単体:’tag’ => ‘タグスラッグ’
複数:’tag’ => ‘タグスラッグ,タグスラッグ’
タグ除外単体:’tag__not_in’ => タグID
複数:’tag__not_in’ => array( タグID, タグID)
特定の投稿を除外単体:’exclude’ => ‘投稿ID’
複数:’exclude’ => ‘投稿ID, 投稿ID’
カスタム投稿を指定単体:’post_type’ => ‘カスタム投稿名’
複数:’post_type’ => array(‘カスタム投稿名’, ‘カスタム投稿名’)

各条件を個別に解説していきます。

取得件数を指定して新着情報を取得する

新着情報に表示する記事の件数を指定する方法をご紹介します。

基本となるコードの【//ここで取得条件を指定する】部分に、以下のコードを記述しましょう。

'posts_per_page' => 取得する件数

【取得する件数】の部分を表示させたい記事数に置き換えます。
仮に10件表示させたいのであれば【10】と記述します。

基本となるコードに上記のコードを追記すると以下のような記述になります。

<?php
$information= get_posts( array(
'posts_per_page' => 取得する件数
));
if( $information):
?>
<ul>
<?php
foreach( $information as $post ):
setup_postdata( $post );
?>
<li>
<?php the_time('Y年n月j日'); ?> - <a href="<?php the_permalink(); ?>"> <?php the_title(); ?></a>
</li>
<?php
endforeach;
wp_reset_postdata();
?>
</ul>
<?php else: ?>
<p>表示できる情報はありません。</p>
<?php endif; ?>

どんどん行きましょう。

特定カテゴリーの新着情報を取得する

特定のカテゴリーに分類された投稿だけを新着情報に表示する方法をご紹介します。

基本となるコードの【//ここで取得条件を指定する】部分に、以下のコードを記述しましょう。

'category' => 'カテゴリID'

複数のカテゴリを指定したい場合は、以下のように記述します。

'category' => 'カテゴリID, カテゴリID'

【カテゴリID,】を追加すればいくつでもカテゴリを指定できます。
最後のカテゴリIDには【,】は必要ありません。

【カテゴリID】の部分は、指定するカテゴリのスラッグに置き換えてください。
カテゴリIDの調べ方は、WordPressの投稿IDやカテゴリーIDなど各種IDの調べ方を参照。

基本となるコードに上記のコードを追記すると以下のような記述になります。

<?php
$information= get_posts( array(
'category' => 'カテゴリID'
));
if( $information):
?>
<ul>
<?php
foreach( $information as $post ):
setup_postdata( $post );
?>
<li>
<?php the_time('Y年n月j日'); ?> - <a href="<?php the_permalink(); ?>"> <?php the_title(); ?></a>
</li>
<?php
endforeach;
wp_reset_postdata();
?>
</ul>
<?php else: ?>
<p>表示できる情報はありません。</p>
<?php endif; ?>

どんどん行きます。

特定カテゴリーを除いて新着情報を取得する

特定のカテゴリーに分類された投稿を除いて新着情報を表示する方法をご紹介します。

基本となるコードの【//ここで取得条件を指定する】部分に、以下のコードを記述しましょう。

'category' => '-カテゴリID'

複数のカテゴリを指定したい場合は、以下のように記述します。

'category' => '-カテゴリID, -カテゴリID'

先ほどの特定のカテゴリに分類された投稿のみを新着情報に表示させる方法とコードは同じです。どこが違うかといえば、【カテゴリID】の前に【-】が着いている点です。

【-】をつけることで、そのカテゴリの投稿を除外することができます。

【-カテゴリID,】を追加すればいくつでも除外するカテゴリを指定できます。
最後のカテゴリIDには【,】は必要ありません。

【カテゴリID】の部分は、指定するカテゴリのスラッグに置き換えてください。
カテゴリIDの調べ方は、WordPressの投稿IDやカテゴリーIDなど各種IDの調べ方を参照。

基本となるコードに上記のコードを追記すると以下のような記述になります。

<?php
$information= get_posts( array(
'category' => '-カテゴリID'
));
if( $information):
?>
<ul>
<?php
foreach( $information as $post ):
setup_postdata( $post );
?>
<li>
<?php the_time('Y年n月j日'); ?> - <a href="<?php the_permalink(); ?>"> <?php the_title(); ?></a>
</li>
<?php
endforeach;
wp_reset_postdata();
?>
</ul>
<?php else: ?>
<p>表示できる情報はありません。</p>
<?php endif; ?>

上記は、除外するカテゴリをひとつだけ指定した場合のコードです。

どんどん行きます。

特定タグの新着情報を取得する

特定のタグが設定された投稿だけを新着情報に表示する方法をご紹介します。

基本となるコードの【//ここで取得条件を指定する】部分に、以下のコードを記述しましょう。

'tag' => 'タグスラッグ'

複数のタグを指定したい場合は、以下のように記述します。

'tag' => 'タグスラッグ,タグスラッグ'

【タグスラッグ,】を追加すればいくつでもタグを指定できます。
最後のタグスラッグには【,】は必要ありません。

【タグスラッグ】の部分は、指定するタグのスラッグに置き換えてください。

基本となるコードに上記のコードを追記すると以下のような記述になります

<?php
$information= get_posts( array(
'tag' => 'タグスラッグ'
));
if( $information):
?>
<ul>
<?php
foreach( $information as $post ):
setup_postdata( $post );
?>
<li>
<?php the_time('Y年n月j日'); ?> - <a href="<?php the_permalink(); ?>"> <?php the_title(); ?></a>
</li>
<?php
endforeach;
wp_reset_postdata();
?>
</ul>
<?php else: ?>
<p>表示できる情報はありません。</p>
<?php endif; ?>

上記はひとつのタグを指定した場合のコードです。

続きます。

特定タグを除いて新着情報を取得する

特定のタグが設定された投稿を除いて新着情報に表示する方法をご紹介します。

基本となるコードの【//ここで取得条件を指定する】部分に、以下のコードを記述しましょう。

'tag__not_in' => 'タグID'

複数のタグを指定したい場合は、以下のように記述します。

'tag__not_in' => array( 'タグID', 'タグID')

【タグID,】を追加すればいくつでも除外するタグを指定できます。
最後のタグIDには【,】は必要ありません。

【タグID】の部分は、指定するタグのスラッグに置き換えてください。
タグIDの調べ方は、WordPressの投稿IDやカテゴリーIDなど各種IDの調べ方を参照。

基本となるコードに上記のコードを追記すると以下のような記述になります

<?php
$information= get_posts( array(
'tag__not_in' => 'タグID'
));
if( $information):
?>
<ul>
<?php
foreach( $information as $post ):
setup_postdata( $post );
?>
<li>
<?php the_time('Y年n月j日'); ?> - <a href="<?php the_permalink(); ?>"> <?php the_title(); ?></a>
</li>
<?php
endforeach;
wp_reset_postdata();
?>
</ul>
<?php else: ?>
<p>表示できる情報はありません。</p>
<?php endif; ?>

上記はひとつのタグを指定した場合のコードです。

続きます。

特定の記事を除いて新着情報を取得する

特定の記事を新着情報から除外する方法をご紹介します。
基本となるコードの【//ここで取得条件を指定する】部分に、以下のコードを記述しましょう。

'exclude' => '投稿ID'

複数の投稿を除外したい場合は、以下のように記述します。

'exclude' => '投稿ID, 投稿ID'

【投稿ID,】を追加すればいくつでも投稿を除外できます。
最後の投稿IDには【,】は必要ありません。

【投稿ID】の部分は、指定するタグのスラッグに置き換えてください。
投稿IDの調べ方は、WordPressの投稿IDやカテゴリーIDなど各種IDの調べ方を参照。

基本となるコードに上記のコードを追記すると以下のような記述になります。

<?php
$information= get_posts( array(
'exclude' => '投稿ID'
));
if( $information):
?>
<ul>
<?php
foreach( $information as $post ):
setup_postdata( $post );
?>
<li>
<?php the_time('Y年n月j日'); ?> - <a href="<?php the_permalink(); ?>"> <?php the_title(); ?></a>
</li>
<?php
endforeach;
wp_reset_postdata();
?>
</ul>
<?php else: ?>
<p>表示できる情報はありません。</p>
<?php endif; ?>

上記は記事をひとつ除外する場合の記述です。

続きます。

カスタム投稿の新着情報を取得する

特定のカスタム投稿の投稿だけを新着情報に表示する方法をご紹介します。
基本となるコードの【//ここで取得条件を指定する】部分に、以下のコードを記述しましょう。

'post_type' => 'カスタム投稿名'

複数のカスタム投稿名を指定したい場合は、以下のように記述します。

'post_type' => array('カスタム投稿名', 'カスタム投稿名')

【’カスタム投稿名’,】を追加すればいくつでも投稿を除外できます。
最後のカスタム投稿名には【,】は必要ありません。

【カスタム投稿名】の部分は、指定するタグのスラッグに置き換えてください。
カスタム投稿名の調べ方は、カスタム投稿名とカスタムタクソノミー名の調べ方を参照。

基本となるコードに上記のコードを追記すると以下のような記述になります

<?php
$information= get_posts( array(
'post_type' => 'カスタム投稿名'
));
if( $information):
?>
<ul>
<?php
foreach( $information as $post ):
setup_postdata( $post );
?>
<li>
<?php the_time('Y年n月j日'); ?> - <a href="<?php the_permalink(); ?>"> <?php the_title(); ?></a>
</li>
<?php
endforeach;
wp_reset_postdata();
?>
</ul>
<?php else: ?>
<p>表示できる情報はありません。</p>
<?php endif; ?>

上記は、カスタム投稿をひとつ指定する場合のコードです。

続きます。

特定のカスタムフィールドに指定した値が入っている投稿だけの新着情報を取得する

'meta_query' => array( array(
'key' => 'カスタムフィールド名',
'value' => '指定する値'
)),

【カスタムフィールド名】の部分は、指定するカスタムフィールド名に置き換えてください。【指定する値】の部分は、カスタムフィールドに入っている値に置き換えてください。

例えば、【おすすめ】というカスタムフィールドに【最高】という値が入っている投稿のみを新着情報に表示させたい場合は、以下のような記述になります。

'meta_query' => array( array(
'key' => 'おすすめ',
'value' => '最高'
)),

基本となるコードに上記のコードを追記すると以下のような記述になります

<?php
$information= get_posts( array(
'meta_query' => array( array(
'key' => 'カスタムフィールド名',
'value' => '指定する値'
)),

));
if( $information):
?>
<ul>
<?php
foreach( $information as $post ):
setup_postdata( $post );
?>
<li>
<?php the_time('Y年n月j日'); ?> - <a href="<?php the_permalink(); ?>"> <?php the_title(); ?></a>
</li>
<?php
endforeach;
wp_reset_postdata();
?>
</ul>
<?php else: ?>
<p>表示できる情報はありません。</p>
<?php endif; ?>

以上です。

条件を組み合わせて新着情報を表示してみる

これまでにご紹介した条件を組み合わせたコードをいくつかご紹介します。
条件を組み合わせるときは、最後の条件以外、行の最後に【,】をつけます。

カテゴリAかカテゴリBに分類されている投稿を10件表示する

<?php
$information= get_posts( array(
'category' => 'カテゴリAのID, カテゴリBのID',
'posts_per_page' => 10

));
if( $information):
?>
<ul>
<?php
foreach( $information as $post ):
setup_postdata( $post );
?>
<li>
<?php the_time('Y年n月j日'); ?> - <a href="<?php the_permalink(); ?>"> <?php the_title(); ?></a>
</li>

</ul>
<?php else: ?>
<p>表示できる情報はありません。</p>
<?php endif; ?>

カテゴリAかカテゴリBに分類されている+タグCかタグDが設定されている投稿を10件表示する

<?php
$information= get_posts( array(
'category' => 'カテゴリAのID, カテゴリBのID',
'tag' => 'タグCのスラッグ,タグDのスラッグ',
'posts_per_page' => 10

));
if( $information):
?>
<ul>
<?php
foreach( $information as $post ):
setup_postdata( $post );
?>
<li>
<?php the_time('Y年n月j日'); ?> - <a href="<?php the_permalink(); ?>"> <?php the_title(); ?></a>
</li>
<?php
endforeach;
wp_reset_postdata();
?>
</ul>
<?php else: ?>
<p>表示できる情報はありません。</p>
<?php endif; ?>

カテゴリAに分類されている+タグBが設定されている+投稿Aを除外した投稿を10件表示する

<?php
$information= get_posts( array(
'category' => 'カテゴリAのID',
'tag' => 'タグBのスラッグ',
'exclude' => '投稿AのID',
'posts_per_page' => 10

));
if( $information):
?>
<ul>
<?php
foreach( $information as $post ):
setup_postdata( $post );
?>
<li>
<?php the_time('Y年n月j日'); ?> - <a href="<?php the_permalink(); ?>"> <?php the_title(); ?></a>
</li>
<?php
endforeach;
wp_reset_postdata();
?>
</ul>
<?php else: ?>
<p>表示できる情報はありません。</p>
<?php endif; ?>

条件を組み合わせることで、好みの新着情報を表示することができます。
いろいろと試してみてください。

新着情報に表示させる内容を設定してみよう

最初にご紹介した基本となるコードは、投稿日と記事タイトルだけを表示しました。
ここでは、投稿日や記事タイトル以外の情報を表示させる方法をご紹介します。

表示内容は基本コードの以下の部分です。

<li>
<?php the_time('Y年n月j日'); ?> - <a href="<?php the_permalink(); ?>"> <?php the_title(); ?></a>
</li>

ひとつの投稿はliタグに囲まれて出力されます。
表示させたい内容は、liタグの間に記述します。

ここにいろいろな内容を表示してみましょう。

新着情報にアイキャッチを表示する

アイキャッチを表示させる場合は、以下のコードを記述します。

<?php if ( has_post_thumbnail() ): ?>
<?php echo the_post_thumbnail(); ?>
<?php else: ?>
<img src="ここに代替画像のURL">
<?php endif; ?>

赤文字部分【ここに代替画像のURL】は、任意の画像URLに置き換えてください。
アイキャッチ設定されていないときに指定した画像が表示されます。

新着情報にカテゴリーを表示する

カテゴリーを表示させる場合は、以下のコードを記述します。

<?php the_category(', '); ?>

上記のコードでは、以下のような形式でカテゴリが出力されます。

カテゴリ, カテゴリ・・・

カテゴリが複数設定されている場合、【,】区切りとなります。
カテゴリページへのリンクつきです。

新着情報にタグを表示する

タグを表示させる場合は、以下のコードを記述します。

<?php the_tags('', ', '); ?>

上記のコードでは、以下のような形式でタグが出力されます。

タグ, タグ・・・

タグが複数設定されている場合、【,】区切りとなります。
タグページへのリンクつきです。

新着情報に抜粋を表示する

抜粋を表示させる場合は、以下のコードを記述します。

<?php the_excerpt(); ?>

上記のコードの場合、改行がそのまま反映された形式で表示されます。
改行が不要な場合は、以下のコードを利用しましょう。

<?php echo get_the_excerpt(); ?>

抜粋に関しましては、以下のコンテンツも合わせて確認してください。
WordPressの抜粋で知っておくべき基本と3つのカスタマイズ

今回ご紹介した以外にも、いろいろな内容を表示することができます。
いろいろと調べてみてください。

分からないことがあれば、お問い合わせください。
お力になれるかもしれません。

まとめ

WordPressに新着記事の一覧を表示する方法をご紹介しました。

WordPressの関数【get_posts】を使えば、簡単に新着情報を表示できます。
表示内容もいろいろとカスタマイズできるので大変便利ですね。

今回のコンテンツが、あなたの参考になれば幸いです。

Wordpressのカスタマイズや不具合など
何かお困りのことはありませんか?

Wordpressに関連するあなたのお悩み、解決いたします。
次のような方は、お気軽にご相談下さい。

  • Wordpressサイトをカスタマイズしたいが、やり方が分からないで困っている。カスタマイズの知識が豊富な人に任せたい。
  • Wordpressサイトに不具合が発生したが、直し方が分からない。不具合の修正経験が豊富な人に任せたい。
  • 既存サイトにWordPressを導入したいが、やり方が複雑で自分ではできそうにもない。経験が豊富な人に任せたい。
  • WordPressがハッキングされたが修正の仕方が分からない。サイトを元通りにできる人を探している。
  • Wordpressで0からサイトを制作したいが、自分ではできそうにもない。プロにサイト制作を委託したい。

一つでも該当する方は、以下のフォームからお気軽にご相談下さい。

WordPressに関して今すぐ相談する

著者:takaya kondo

岡山在住のWordPress専門フリーランサーです。Wordpressを使ったWEBサイト制作を中心に10年間ほど活動させていただいています。

Wordpress関連の記事でお役に立てれば幸いです。

【関連記事】あなたが興味のありそうな関連記事をご紹介します。

コメントを残す

(必須)

CAPTCHA