WPのACFでタクソノミーのソートをする

2024.03.01 09:00
2024.02.29 11:49
WPのACFでタクソノミーのソートをする

WPのACFでつくったタクソノミーをソートしてみました。
場面によっていろんなやり方があるみたいですが、今回はこれで。

前談として、順番の数字を入れる用のフィールドをタクソノミーに追加しておく必要があります。詳しくはこちらの投稿で。

では実際にコードを見ていきましょう。

// データ取得
$terms = get_terms('category');
$categories = [];

// 並べ替え用のデータを作成
foreach($terms as $term) {
  $category['name'] = $term->name;
  $category['term_id'] = $term->term_id;
  $category['description'] = $term->description;
  $category['term_id'] = $term->term_id;
  $category['link'] = home_url('/') . $term->taxonomy . '/' . $term->slug;
  $category['image'] = get_field('category_image', 'magazine_category' . '_' . $term->term_id)['sizes']['medium'];
  $category['order'] = get_field('category_order', 'magazine_category' . '_' . $term->term_id);

  $categories[] = $category;
}

// orderをキーにして並べ替え
$ageArray = array_column($categories, 'order' );
array_multisort($ageArray, SORT_DESC, $categories);

ちょっと強引ですが、データを取得してオリジナルの配列を作り、
「array_multisort」で「order」というキーを軸に配列を並べ替えています。

この「order」はカスタムフィールドで追加した「順番」フィールドです。数字が入っています。

新しく配列を作るので、膨大なデータ量ならメモリを圧迫するかもですが、タクソノミーなので問題ないでしょう。

今回は以上です!