みなさん、WordPressのカテゴリ、並べ替えてますか?

……どんなフリだよって。

WordPressのカテゴリリストって、標準ではカテゴリ名順になっちゃうんだよね。

つまり、あいうえお(もしくはABC)順になるわけだ。

リストを自作すると、カテゴリID順とか別の並び方にできるけど、「自由に並べ替える」機能はない。

自由に並べ替えられるプラグインはあるけど、サイドバーウィジェット専用だったり。

もしくは「プラグインはなるべく使わねぇ!!」という主義のあなた。

プラグインもテーマ関数(functions.php)も使わない、画期的な方法をご紹介。

まずはカテゴリリストを自作してみる

<ul>
<?php $cat_all = get_terms('category', 'hide_empty=0&orderby=name&pad_counts=1');
foreach ( $cat_all as $value ) { ?>
    <li><a href="<?php echo get_category_link($value->term_id); ?>"><?php echo $value->name; ?></a> (<?php echo $value->count; ?>)</li>
<?php } ?>
</ul>

ソースは左右にスクロールして全部読めるよ。緑字はPHP部分。

こうやると、カテゴリの一覧を取得して、投稿数カウント付きでカテゴリ名順に表示する。

で、カテゴリ名順ってのはカテゴリ名の文字コード順なわけだ。

赤字部分を“name”から変更することで、ソートを投稿数順(count)、カテゴリID順(id)、スラッグ順(slug)などのフィールドに変えることができる。

get_terms() 関数の詳しい使い方は、次のリンク先を参照。
 →関数リファレンス/get terms - WordPress Codex 日本語版

しかし、自由に並び替えるのは……

最終手段としてはPHPなど使わずに、HTMLで全部手書きすればいいのだが……

カテゴリの「説明」を使う

WordPressの管理画面の「投稿」→「カテゴリー」をみると、カテゴリには他のフィールドがあるじゃないか!

それはカテゴリの「説明」だ。

テーマによってはこのフィールドを使用するようだが、活用していない人も多いのではないだろうか。

ということで、「説明」フィールドに通し番号を付けて、これで並び替えればいいじゃないか!

上のリンク先には「説明」順でのソートについては書いてないんだけど、実は可能だ。

このブログでは、4桁の番号をつけてカテゴリを管理している。

上2桁が親カテゴリの番号、下2桁が子カテゴリの番号だ。

たとえば、「WEB」カテゴリは「0300」で、その子カテゴリの「れーとーびーむの作り方」カテゴリは「0301」という感じだ。

こうすれば、「説明」順にソートすることで、カテゴリを自由に並び替えることができる。

PHPの例

<ul>
<?php $cat_all = get_terms('category', 'hide_empty=0&orderby=description&pad_counts=1');
foreach ( $cat_all as $value ) { ?>
    <li class="side-category<?php if ($value->parent) echo ' child'; ?>"><a href="<?php echo get_category_link($value->term_id); ?>"><?php echo $value->name; ?></a> (<?php echo $value->count; ?>)</li>
<?php } ?>
</ul>

赤字部分のように、 orderby=description とすることで、ソートは「説明」順になる。

また、先ほどの例とは違い、橙字部分の記述を追加することで、「子カテゴリ」の<li>タグに child というクラスを付けることができる。

これにより、CSSを弄ることで子カテゴリを「字下げ」して表示することもできる。

終わりに

今回は、WordPressでプラグインを使わずにカテゴリを自由に並び替える方法を紹介した。

プラグインってのはサイトの高速化のためにはあまり使いたくないのが本音だよね。

このブログでも、自力でなんとかなるものは可能な限りなんとかしようという方針でやっている。

WordPressは利用者が多く、またレンタルブログと違ってカスタマイズが前提のため、知識や経験が蓄積されていて、だいたいのことは検索すれば実現する方法が見つかるのだ。

でも今回の方法は、いろいろ検索しても見つからなかったので、自力でやってみたらうまくいったという感じだ。

WordPressの先輩方にはいつもお世話になっているので、俺もこうやって知識を共有することでその恩に報いたい。

ということで、これからもいろいろ発信していくので、お楽しみに? よろしく?

両方かな!