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

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」はカスタムフィールドで追加した「順番」フィールドです。数字が入っています。
新しく配列を作るので、膨大なデータ量ならメモリを圧迫するかもですが、タクソノミーなので問題ないでしょう。
今回は以上です!