WordPress 記事一覧を更新日順にする方法

WordPress プログラミング

例えば、トップページにお知らせ記事の一覧を表示することとかよくありますよね。
この並び順はデフォルトだと「投稿日順」となっています。もしかすると、「更新日順に並べて!」なんてご要望もあるかもです。

今回は、記事の並び順を変える方法を解説します。(プラグインは使わない派)

投稿記事一覧の表示順を更新日順にする方法

functions.php に以下を追記します。

functions.phpは、「外観」→「テーマファイルエディタ」→「functions.php」で開けます。
※念の為、追記する前の内容をコピーしてメモ帳などに貼っておき、もとに戻せるようにしておきましょう。

/* TOPページの投稿記事一覧を更新日順にする */
function orderby_modified( $query ) {
	if ( $query->is_main_query() ) {
		if ( $query->is_home() ) {
			$query->set( 'orderby', 'modified' );
		}
	}
}
add_action('pre_get_posts','orderby_modified');

9行目の modified が更新日を示してるので、これを変えることで他の並び順にもできますね。
■orderbyで指定できる種類たち(WordPress Codex)
https://tinyurl.com/7v4ryy8c

【参考】ちょっとだけコードの解説

今回はちょっとだけコードの解説もしてみます(`・ω・´)ゞ

まずは9行目から。
add_action('pre_get_posts','orderby_modified');
「pre_get_posts」がアクションフックってやでして、表示するページの諸々の情報(記事のタイトルとか並び順とか色々いっぱい)をゲッツする前に実行するよ!って感じです。たぶん。
WordPress語でいうと、クエリを実行する前に実行するよって感じになります。
で、実行するのはどれっていうと、「orderby_modified」なわけでして、それが2行目からつらつらと書かれているわけです。(説明ヘタクソ)

では次からが本体ですね。2行目いきます!
function orderby_modified( $query ) {
実行しようとする「orderby_modified」の内容はこれやで!って感じになります。
$query は、ここにWordPress君の諸々の情報ネタ(変数ってやつですが)が詰め込まれてるんです。
9行目で解説した、「pre_get_posts」によって詰め込んでくれちゃったわけです。

3行目。
if ( $query->is_main_query() ) {
if文ですね。「これはメインクエリですかね?」ってきいてます。
今回はメインクエリの中身を変えるので、これを聞いてあげます。(説明ざつ)

4行目。
if ( $query->is_home() ) {{
もいっちょif文です。「で、これはホームページですのん?」ってきいてます。
今回はトップページの記事一覧の表示順を変えたいのでこれを聞いてあげます。

5行目。
$query->set( 'orderby', 'modified' );
ようやくやりたいことの本丸です。「並び順を更新日順にしてね」っていってます。
orderby で「並び順を」、modified で、「更新日順に」って感じです。

コードの説明はむずいっすね💦これを理解するには、メインクエリの理解とかもしたいところなのでまた今度書いてみたいかもです。
おつかれさまでした!