目次
はじめに
この記事ではカスタム投稿タイプのカテゴリーの並び順をプラグインを使用せず変更する方法を紹介します。
プラグインありで変更する方法は下記記事にあります。
カテゴリーの並び順を変更したいと思ったきっかけ
カテゴリーの「その他」を一番最後にしたかったからです。
プラグインなしでカスタム投稿タイプのカテゴリー並び順を変更する方法
管理画面からの操作
カテゴリーを編集の「説明」に並べたい順に数字を入力します。
数字を入力した後のカテゴリー一覧
その他は最後にするので大きめの数字にしています。
functions.php
下記コードを追加してください。
function taxonomy_orderby_description($orderby, $args) {
if ($args['orderby'] == 'description') {
$orderby = 'tt.description';
}
return $orderby;
}
add_filter('get_terms_orderby', 'taxonomy_orderby_description', 10, 2);
taxonomy.phpなどのカテゴリー一覧を表示させたいファイル
下記コードを追加すれば説明に入力した数字順にカテゴリー一覧が表示されるようになります。
<?php
$taxonomy_terms = get_terms('タクソノミー名', array('orderby' => 'description'));
if($taxonomy_terms):
usort($taxonomy_terms, function($a, $b) {
$descriptionA = intval($a->description);
$descriptionB = intval($b->description);
if ($descriptionA === $descriptionB) {
return 0;
}
return ($descriptionA < $descriptionB) ? -1 : 1;
});
?>
<ul class="archive-list">
<li><a href="<?php echo home_url('カスタム投稿タイプスラッグ'); ?>">すべて</a></li>
<?php foreach($taxonomy_terms as $taxonomy_term): ?>
<li><a href="<?php echo get_term_link($taxonomy_term); ?>"><?php echo $taxonomy_term->name; ?></a></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
ポイント!
説明に入力した数字は「文字列型」として認識されるため、カテゴリーの数が10を超えてくると
「1, 10, 2, 3, …., 9」というような並び順になってしまいます。
そこでusort関数を使用することで「1, 2, 3, …., 9, 10」と数字順で並び替わるようにしています。
説明に入力した数字は「文字列型」として認識されるため、カテゴリーの数が10を超えてくると
「1, 10, 2, 3, …., 9」というような並び順になってしまいます。
そこでusort関数を使用することで「1, 2, 3, …., 9, 10」と数字順で並び替わるようにしています。
まとめ
今回はカスタム投稿タイプのカテゴリーの並び順をプラグインなしで変更する方法について紹介しました。
プラグインを使用したくない方にはおすすめの方法になりますが、
カテゴリー数が多いと入力するのが面倒になるため、そういう方はプラグインを使用する方法が良いかもしれません。