WordPressでタームの一覧を投稿数の多い順で表示する方法

投稿に設定されているタームをget_terms()で取得して、投稿数の多い順で一覧表示する方法の備忘録です。
get_terms()を使用してタームを一覧表示する方法は、こちらの記事で詳しくまとめています。
タームの並び替え
タームを投稿数の多い順で並び替えて一覧表示します。
テンプレート内のターム一覧を表示したい箇所に、以下のコードを記入します。
$args = array(
'orderby'=>'count',
'order'=>'DESC',
);
$terms = get_terms('tax-name', $args);
foreach ($terms as $term) {
echo '<a href="' . get_term_link($term) . '">' . $term->name . '</a>';
}
配列$argsで設定した'orderby'=>'count'で取得したタームを投稿数で並び替えています。
'order'=>'DESC'で投稿数が多い順になります。少ない順に並べる場合は「ASC」を設定します。
「tax-name」の部分には、タームを表示したいタクソノミーのスラッグを設定します。
順序パラメータ
取得したタームはorderbyに以下のパラメータを設定することで、任意の順に並び替えが可能です。
- name … 名前順(省略時は’name’が設定されます)
- count … 投稿数順
- slug … スラッグの名前順
- id … ID順
- none … 順序をつけない
上記は一例で、その他にもグループIDなど様々なパラメータで並び替えが設定できます。
タームの投稿数を表示
タームの一覧に、設定されている投稿の件数も合わせて表示するコードです。
$args = array(
'orderby'=>'count',
'order'=>'DESC',
);
$terms = get_terms('tax-name', $args);
foreach ($terms as $term) {
echo '<a href="' . get_term_link($term) . '">' . $term->name . '<span class="count">('. $term->count . ')</span></a>';
}
ループ内の$term->countでタームの記事数を表示します。


