本ページはアフィリエイトプログラムによる収益を得ています。
WordPress全般

【WordPress】トップページの最新記事一覧を最終更新日順にする方法

WrodPress(ワードプレス)でサイトを作成していると、「更新した日付」順に記事を並べたいと思うことはありませんか?

普通のWEBサイトやブログではあまりそう思わないかもしれませんが、例えば、漫画の発売日をお知らせするサイトだったり、最新情報を同じページで更新していくサイトならば、更新した記事を上に持ってきたいかもしれません。

今回は、トップページ(ホーム)の最新記事一覧や、カテゴリーページ、検索結果一覧において、「最終更新日」「ランダム」「タイトル」などでソートする方法をご紹介します。

わからんゾウ
わからんゾウ
う~ん、更新したページをみんなに見てもらいたいんだけど、最新記事が出るトップページには載らないんだよね……。
はかせ
はかせ
それなら、トップページの一覧を更新日順に表示させてみるのはどうじゃ?
わからんゾウ
わからんゾウ
えっ!そんなことできるんですか博士!?
この記事で行うこと

この記事では、function.phpに追記をして、トップページ等の投稿一覧を更新日順などにソートする方法をご紹介しています。

トップページの最新記事を最終更新日順にソートする

トップページの最新記事一覧を最終更新日順にソートするには、手順はたったの一つ!

以下のコードをfunction.phpに追記するだけです。
function twpp_change_sort_order( $query ) {
if ( is_admin() || ! $query->is_main_query() ) {
return;
}
if ( $query->is_home() ) {
$query->set( ‘orderby’, ‘modified’ );
}
}
add_action( ‘pre_get_posts’, ‘twpp_change_sort_order’ );

外観 > テーマエディター > テーマのための関数(function.php)
必ずバックアップをとってから行ってください。不具合が生じても当サイトでは責任を負いかねます。

何を行っているかを、次で説明します。

解説:メインループの並びを変更している

WordPressのメインループの並びを、if文で指定してあげながら、特定のループを好きなソートで並び替えてあげています。

function twpp_change_sort_order( $query ){}

こちらで、メインループのソートを上書きしますということを書いています。

if ( $query->is_home() ){}

こちらでは、トップページ(ホーム)の投稿記事一覧を並び順を変更することを指定しています。

$query->set( ‘orderby’, ‘modified’ );

これで、並び順を「最終更新日」に変更するよう指定しています。

WordPressでは初期でDESCに指定されているため、降順にする場合は何も記載する必要はありません。昇順にする場合は、「$query->set( ‘order’, ‘ASC’ );」を合わせて記載します。

カテゴリーページ・検索結果の一覧をソートする

トップページ以外の記事一覧もソートすることが可能です。
function twpp_change_sort_order( $query ) {
if ( is_admin() || ! $query->is_main_query() ) {
return;
}

if ( $query->is_home() ) {
$query->set( ‘orderby’, ‘modified’ );
} elseif ( $query->is_category() ) {
$query->set( ‘orderby’, ‘modified’ );
} elseif ( $query->is_search() ) {
$query->set( ‘orderby’, ‘modified’ );
}
}

add_action( ‘pre_get_posts’, ‘twpp_change_sort_order’ );
先ほどのコードに、以下の部分を追記しています。

elseifで条件を追加してあげています。

elseif ( $query->is_category() ) {
$query->set( ‘orderby’, ‘modified’ );
}elseif ( $query->is_search() ) {
$query->set( ‘orderby’, ‘modified’ );
}

  • $query->is_category()
  • $query->is_search()

$query->is_category()でカテゴリーページを、$query->is_search()で検索結果ページを指定しています。

更新日以外で並び替える

上のコードでは、[$query->set( ‘orderby’, ‘modified’ )]で更新日での並び替えを指示していました。

更新日以外にも並び替える方法があるので、ご紹介します。

author著者で並び替える。
titleタイトルで並び替える。
nameスラッグで並び替える。
ID投稿 ID で並び替える。
randランダムで並び替える。
comment_countコメント数で並び替える
modified更新日で並び替える
date日付で並び替える。(初期はこれ)

こちらは、関数リファレンス/WP Queryの順序づけパラメータに記載してあるのを参考にしています。

初期値では「date」が指定されおり、これを変更することにより並び替えます。

$query->set( ‘orderby’, ‘rand’ );

このように、上で紹介した「modified」の部分を「rand」に変更し、好きな並び順を指定してください。

また、昇順に並び替えたい時は、

if ( $query->is_home() ) {

$query->set( ‘order’, ‘ASC‘ );
$query->set( ‘orderby’, ‘title‘ );

}

このように、ASC(昇順)にする一文を加えてください。

 

おわり

以上で、WordPressのトップページ(ホーム)の最新記事(投稿一覧)や、カテゴリーページ、検索結果ページを更新日やそれ以外でソートすることができます。

自分の好きなようにカスタマイズしてみてください。

 

こちらのサイト様を参考にしています。
THE WORDPRESS PRESS