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を使い並び替える項目を指定します。