deckspace

PDA・デジモノ・その他雑多なジャンルからのレポートやWeb情報、テキトーに書かれる私的日記などからなるブログです。不定期更新。(・∀・)ノ ヨッポ

【WordPress】Cocoonでの記事の並びをメイン・カテゴリともに昇順にするカスタマイズ法

WordPressで本のようなサイトを作っているのですが、本の目次に従って、記事も最初(古い投稿)から順番に並べることができるか調べてみましたので、備忘録的にメモ。

 

基本的にはCocoonの作者様のFAQページで解決します

 

wp-cocoon.com

 

回答を引用します。

 

実際に試してはないですが、子テーマの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に貼り付けり付けるだとメインは昇順になるが、カテゴリ別の表示は相変わらず降順。

 

そこで、この回答中に紹介されているページを参照してみる。

 

thewppress.com

 

以下、同サイトから引用します。

 

条件分岐を使えば、場面によって並び順を変更することもできます。

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' );

 

とすればよいはず。

 

ということで早速試してみたところ・・・無事記事が昇順になりました!

 

降順に戻したい場合は、追記した部分を削除すれば良しです。