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’ );
何を行っているかを、次で説明します。
解説:メインループの並びを変更している
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