WordPressのカテゴリーやカスタムタクソノミーを任意に並び替えたいときプラグインを使うと簡単にできますが、プラグインを使わずに(と言っても値を入力するのにAdvanced Custom Fieldsを使うんですが)並び替えをしたい時のための備忘録。
カスタムタクソノミーにカスタムフィールド を持たせるためにAdvanced Custom Fieldsを使います。
Advanced Custom Fieldsでフィールド名を指定します。
ここではフィールド名:sort_orderと設定、カスタムフィールド を設置する「位置」はTaxsonomy Termを選択して表示したいカスタムタクソノミーを選択。

カスタムタクソノミーの画面で、[sort_order]の入力欄に任意の数値を入力します。

Advanced Custom Fieldsでの設定方法はこちらのサイトで詳しく説明されています。
get_categoriesで取得したカテゴリーを好きな順番で並べ替える
https://www.nishi2002.com/14929.html
上記サイトでは、通常のカテゴリーの並び替えの手順を記載されています。がカスタムタクソノミーでもほぼ同じです。
カテゴリーの情報を取得にはget_categoriesを使っていますが、カスタムタクソノミーにはget_termsを使います。
カスタムタクソノミー名: worksした場合
<?php
$taxonomy = 'works';
$args = array('hide_empty'=>false);
$terms = get_terms($taxonomy, $args);
$count = count($terms);
for ($i=0; $i<$count; $i++) {
$terms[$i]->sort_order = get_field('sort_order', $taxonomy.'_'.$terms[$i]->term_id);
}
usort($terms, function($a, $b) use ($taxonomy) {
return get_field('sort_order', $taxonomy.'_'.$a->term_id) - get_field('sort_order', $taxonomy.'_'.$b->term_id);
});
?>
<ul>
<?php foreach ( $terms as $term ){
echo '<li class="tax-'.$term->slug.' link"><a href="'.get_term_link($term->slug, 'works').'">'.$term->name.'</a></li>';
}
?>
</ul>好きな値でソートできるPHP関数であるusortを使い並び替える項目を指定します。
