WordPress Tips

カスタムタクソノミーの並び替え(プラグインなしで)

2018-06-03

本記事にはプロモーションが含まれています。

カスタムタクソノミーの並び替え(プラグインなしで)

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

今月キャンペーン特典があるサービス

  • エックスサーバー
    利用料最大30%キャッシュバッグ月額693円&ドメイン永久無料 - 2024年5月1日(水)12:00まで
  • ConoHa WING
    WINGパック36ヶ月で月額678円 53%OFF ドメイン2個無料 - 2024年4月19日(金)16:00まで
  • カラフルボックス
    ドメイン永久無料特典とBOX2以上の月額費用が50%OFFのクーポンコード「SERVER50

-WordPress Tips
-