フロントページだけ投稿の並び順を変更する方法

Cocoonカスタマイズ集
この記事は約2分で読めます。
記事内に広告が含まれています。

はじめに

Cocoon設定→インデックス→並び順の設定は、全てのページに一括で適用されてしまいます。
そのため、カテゴリーページや通常のインデックスなど、古い投稿が埋もれてしまいがちです。

そこで、フロントページの投稿の並び順だけを変更します。

この記事では、この方法について説明します。

実装手順

タブ一覧

以下のコードをfunctions.phpに追加します。

カテゴリーの並びをランダムに変更します。

add_filter('list_category_tab_args', function ($args, $cat_id) {
  $args['orderby'] = 'rand';

  return $args;
}, 10, 2);

カテゴリーごと

以下のコードをfunctions.phpに追加します。

新着記事の並びを更新順、カテゴリーごとの並びをランダムに変更します。

add_filter('get_category_index_list_entry_card_args', function ($args, $categories) {
  if ($categories) {
    // カテゴリーごとの並びをランダムに変更
    $args['orderby'] = 'rand';
  } else {
    // 新着記事の並びを更新日順に変更
    $args['orderby'] = 'modified';
  }

  return $args;
}, 10, 2);

カテゴリーごと(2カラム、3カラム)

以下のコードをfunctions.phpに追加します。

新着記事の並びを更新順、カテゴリーごとの並びをランダムに変更します。

// 新着記事の並びを更新順に変更
add_filter('get_category_index_list_entry_card_args', function ($args, $categories) {
  if (empty($categories)) {
    $args['orderby'] = 'modified';
  }

  return $args;
}, 10, 2);


// カテゴリーごとの並びをランダムに変更
add_filter('list_category_column_atts', function ($atts, $cat_id) {
  $atts['random'] = 1;

  return $atts;
}, 10, 2);

さいごに

今回紹介した方法を使えば、Cocoon設定の全体変更に影響されることなく、フロントページだけに限定して投稿の並び順(更新日順やランダムなど)を柔軟にコントロールすることができます。

タイトルとURLをコピーしました