WordPress Tips

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

2018-06-03

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

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

ソラミ♪

Webエンジニアをやりつつ、デザインにも携わる株式会社コムワークの中の人。WordPress、Adobeアプリ、カワウソ好き。 2015年から当ブログ運営|2008年からGmail使用中|WordPress制作10年以上|15社以上のレンタルサーバー利用経験|100件以上のドメイン取得運用|サイト・ドメイン移転多数 »  もっとくわしく

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

  • この記事を書いた人
  • 最新記事

ソラミ♪

Webエンジニアをやりつつ、デザインにも携わる株式会社コムワークの中の人。WordPress、Adobeアプリ、カワウソ好き。 2015年から当ブログ運営|2008年からGmail使用中|WordPress制作10年以上|15社以上のレンタルサーバー利用経験|100件以上のドメイン取得運用|サイト・ドメイン移転多数 »  もっとくわしく

-WordPress Tips
-