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 ページ からの抜粋。
ページ上のメインクエリーが置き換えられ、ページの読み込み速度に影響を与えることに留意してください。最悪の場合、倍かそれ以上の処理が発生します。簡単に使える代わりに、この関数は混乱と問題を引き起こす傾向があります。
ディスカッション
コメント一覧
無事導入できました。
使わせていただきます。ありがとうございますー
こんにちは。
はじめてコメントします。
紹介されているソースを導入したところ、記事一覧(トップページ)は更新日順に並び替えられました。
ありがとうございます。
一方、検索キーワードに該当するページを表示させたところ、「投稿日順」でソートされて表示されました。
functions.php等に追加すべきソース等があれば、教えて頂けないでしょうか。
よどきかくさん。
$query->is_archive() の後ろに || $query->is_search() を追加すればいいです。
追加したところ、無事に表示されました。
本当にありがとうございます。
ピンバック & トラックバック一覧
[…] […]