WordPress の記事一覧を更新日時順で表示する

ワードプレスの更新日時のイメージ図

WordPress のアーカイブやカテゴリページは通常「投稿日時順」で表示されるのだが、

「更新日時順」で表示する方法はありませんか?

っていう質問があった。

なるほど。サイトの内容によっては、そーいう表示にしたいこともあるのかー。

というわけで、回答としては ↓ こうやな。

functions.php に以下を追加。

function my_orderby_modified( $query ) {
	if( $query->is_main_query() ) {
		if( $query->is_home() || $query->is_category() || $query->is_archive() ) {
			$query->set( 'orderby', 'modified' );
		}
	}
}
add_action( 'pre_get_posts', 'my_orderby_modified' );

他の方法として query_posts を使うという手もあるっちゃあるけど、

query_posts( 'orderby=modified' );

この方法は推奨できない

query_posts は、すでにあるメインクエリを新しいクエリで丸々置き換えるので遅い上に、ページ内の他のクエリ処理にも影響を与えることがある。

以下、WordPress Codex の query_posts ページ からの抜粋。

ページ上のメインクエリーが置き換えられ、ページの読み込み速度に影響を与えることに留意してください。最悪の場合、倍かそれ以上の処理が発生します。簡単に使える代わりに、この関数は混乱と問題を引き起こす傾向があります。

WordPress

Posted by るな