プラグインなしでカテゴリーを好きな順番に並び替える方法

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

完成イメージ

実装手順

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

/**
 * カテゴリーウィジェットに特定のカテゴリーを表示設定
 *
 * @param array $args カテゴリーウィジェットに渡される引数の配列
 * @return array 指定カテゴリーの表示設定を追加した引数の配列
 */
if (!function_exists('custom_category_args')):
function custom_category_args($args) {
  $args['include'] = [
    169, // (親)コーヒー
    16,  // (親)アメブロ
    5,   // (子)ジム
    3,   // (子)イベント
    4,   // (親)カメラ
  ];

  $args['orderby'] = 'include';

  return $args;
}
endif;


// カテゴリーのクエリを変更
add_filter('widget_categories_args', 'custom_category_args');
add_filter('widget_categories_dropdown_args', 'custom_category_args');

解説

カテゴリー

図1に示す投稿→カテゴリーから、希望の順序でカテゴリーのIDをカンマ区切りで指定し、並べ替えます。
具体的には、図2に示す順序に変更します。

【変更前】

  • (親)アメブロ:16
    • (子)イベント:3
    • (子)ジム:5
  • (親)カメラ:4
  • (親)コーヒー:169

【変更後】

  • (親)コーヒー:169
  • (親)アメブロ:16
    • (子)ジム:5
    • (子)イベント:3
  • (子)カメラ:4
表示イメージ

コードに設定したIDのカテゴリーしか表示されません。
そのため、全てのカテゴリーを表示する必要がある場合は、全てのIDを設定してください。

参考:「ナビゲーション」ウィジェットを代用する方法

「ナビゲーションメニュー」ウィジェット

「ナビゲーションメニュー」ウィジェットを使用することで、ノーコードでカテゴリーの順序を自由に並び替え、メニューを作成することができます。

「ナビゲーションメニュー」には、通常の「カテゴリー」ウィジェットにある以下の機能がありません。

  • ドロックダウンで表示
  • 投稿数を表示

参考:カテゴリーを投稿数順で表示する方法

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

/**
 * カテゴリーウィジェットに特定のカテゴリーを表示設定
 *
 * @param array $args カテゴリーウィジェットに渡される引数の配列
 * @return array 指定カテゴリーの表示設定を追加した引数の配列
 */
if (!function_exists('custom_category_args')):
function custom_category_args($args) {
  $args['orderby'] = 'count'; // 投稿数で並び替え
  $args['order']   = 'DESC';  // 降順(多い順)

  return $args;
}
endif;


// カテゴリーのクエリを変更
add_filter('widget_categories_args', 'custom_category_args');
add_filter('widget_categories_dropdown_args', 'custom_category_args');
タイトルとURLをコピーしました