WordPressで本のようなサイトを作っているのですが、本の目次に従って、記事も最初(古い投稿)から順番に並べることができるか調べてみましたので、備忘録的にメモ。
基本的にはCocoonの作者様のFAQページで解決します。
回答を引用します。
実際に試してはないですが、子テーマのfunctions.phpに以下を貼り付けるといけるのではないかと思います。
function twpp_change_sort_order( $query ) { if ( is_admin() || ! $query->is_main_query() ) { return; } if ( $query->is_home() ) { $query->set( 'order', 'ASC' ); } } add_action( 'pre_get_posts', 'twpp_change_sort_order' );
しかしこれを子テーマのfunctions.phpに貼り付けり付けるだとメインは昇順になるが、カテゴリ別の表示は相変わらず降順。
そこで、この回答中に紹介されているページを参照してみる。
以下、同サイトから引用します。
条件分岐を使えば、場面によって並び順を変更することもできます。
function twpp_change_sort_order( $query ) { if ( is_admin() || ! $query->is_main_query() ) { return; } if ( $query->is_home() ) { $query->set( 'orderby', 'comment_count' ); } elseif ( $query->is_category() ) { $query->set( 'orderby', 'modified' ); } elseif ( $query->is_search() ) { $query->set( 'order', 'ASC' ); $query->set( 'orderby', 'title' ); } } add_action( 'pre_get_posts', 'twpp_change_sort_order' );
ASCとは古い順という意味だそうです。
上記の言語を解釈すると、使い方が見えてきました。
'order', 'ASC' で「古い順で並べる」
$query->is_home() が「ホーム画面で作動 」
$query->is_category() が「カテゴリ画面で作動」
$query->is_search() が「検索結果画面で作動」
という意味ですな。
その他、タイトル順とか、コメントの数順とか、更新順とかにも並び替えできるっぽい。
今回は、ホーム、カテゴリ、検索結果、いずれも古い順(執筆順)に記事を並べたいので、
function twpp_change_sort_order( $query ) {
if ( is_admin() || ! $query->is_main_query() ) {
return;
}
if ( $query->is_home() ) {
$query->set( 'order', 'ASC');
} elseif ( $query->is_category() ) {
$query->set( 'order', 'ASC' );
} elseif ( $query->is_search() ) {
$query->set( 'order', 'ASC' );
}
}
add_action( 'pre_get_posts', 'twpp_change_sort_order' );
とすればよいはず。
ということで早速試してみたところ・・・無事記事が昇順になりました!
降順に戻したい場合は、追記した部分を削除すれば良しです。