カスタム投稿タイプのカテゴリーの並び順を変更する方法【プラグインなし】

はじめに

この記事ではカスタム投稿タイプのカテゴリーの並び順をプラグインを使用せず変更する方法を紹介します。

プラグインありで変更する方法は下記記事にあります。

カテゴリーの並び順変更

カスタム投稿タイプのカテゴリーの並び順をプラグインを使用して変更する方法について紹介しています。

カテゴリーの並び順を変更したいと思ったきっかけ

カテゴリーの「その他」を一番最後にしたかったからです。

プラグインなしでカスタム投稿タイプのカテゴリー並び順を変更する方法

管理画面からの操作

カテゴリーを編集の「説明」に並べたい順に数字を入力します。

数字を入力した後のカテゴリー一覧

その他は最後にするので大きめの数字にしています。

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」と数字順で並び替わるようにしています。

まとめ

今回はカスタム投稿タイプのカテゴリーの並び順をプラグインなしで変更する方法について紹介しました。

プラグインを使用したくない方にはおすすめの方法になりますが、

カテゴリー数が多いと入力するのが面倒になるため、そういう方はプラグインを使用する方法が良いかもしれません。

>お問い合わせはこちら

お問い合わせはこちら