WordPressで記事を投稿日ではなく更新日の順に並べる方法

WordPressはデフォルトでは投稿した日付で並ぶようになっています。

この並び順ですが、色々カスタマイズできるので方法を含めて見ていきましょう。

今回は更新日に並び替える方法を紹介します!

ソースコード

表示させたいテンプレートに貼り付けてください。

<?php
$query = new WP_Query( array( 'orderby' => 'modified' ) );
if ( $query->have_posts() ) :
 while ( $query->have_posts() ) :
 $query->the_post();
?>
 <p>ループ内のいつもの処理を書く場所</p>
<?php
 endwhile;
endif;
wp_reset_postdata();
?>

サブループ「WP_Query」を活用する

いつものループと違うのは、WP_Query()を活用しているところです。

デフォルトでは、投稿日順に並ぶ用になっていますので、WP_Query()に色々な条件を設定していくことで、様々な並び順の一覧を作ることができます。

今回は、'orderby' => 'modified'で「並び順を更新日順にしてください!」という指示を送っています。

他にも以下のような並び替えができます。(一例)

  • タイトル(title)
  • 著者(author)
  • ランダム(rand)
  • コメント数(comment_count)

modifiedのところをそれぞれの値に変更すると、並び順も変わります。

サブループとは?

WordPressにはメインループとサブループの2つのループが存在します。

メインループはご存知通り、デフォルトのループですね。表示の並び順は投稿日の順で、1ページあたりの件数は「設定 > 表示設定 > 1ページに表示する最大投稿数」で表示される件数になります。

一方でサブループはメインループから外れて回す処理になります。イメージとしては、メインループからちょっと寄り道する感覚です。

寄り道なので必ず元の道に戻す必要があります。それが、wp_reset_postdata()という関数です。

WP_Query()を使ったときは、wp_reset_postdata()を使うということを覚えておいてください。