2690

WordPressでプラグインを使わずにカテゴリ表示順を並び替える方法

WordPressでプラグインを使わずにカテゴリ表示順を並び替える方法

2011.6.11

以前、「WordPressで指定カテゴリの記事数を表示する方法|1bit::memo」という記事を紹介しましたが、この方法だと記事数以外の全てが手動なのでちょっと面倒でした。
その後いろいろ調べてみて、上記の記事より少しだけ汎用的に使えそうなやり方ができたのでメモしておきます。

確認環境

function.phpにコードを追加

カテゴリ一覧をオブジェクトで取得する方法がないため、「WordPressで全てのカテゴリー構造を取得する方法 | とりさんのソフト屋さん」のコードを使用します。(元サイトのコードとfunction名を変えていますので注意。)

/////////////////////////////////////
//カテゴリ情報の一覧を取得する
/////////////////////////////////////
function get_the_category_all() {
    if ( ! $cat_all = wp_cache_get( 'all_category_all', 'category' ) ) {
        $cat_all = get_terms( 'category', 'fields=all&get=all&orderby=id' );
        wp_cache_add( 'all_category_all', $cat_all, 'category' );
    }
    return $cat_all;
}

カテゴリ一覧を表示

以下のコードをコピペします。修正すべき箇所は以下にて。

並び替えたい順番を配列で記述するコード中の、「array(‘red’,’orange’,’yellow’,’green’);」部分を各自の環境に合わせて記述します。必ずスラッグ名で記載すること、並び替えたい順番で記載することに注意してください。
ここに記述したカテゴリだけを表示しますので、すべてのカテゴリを表示したい場合は、全部書いてください。

その他の情報も出したい

functions.phpのコードはさまざまなカテゴリ情報を取得していますので、カテゴリに関する様々な情報を取り出せます。
上記サンプルで例えると、$term->★の★部分を変更することで、いろいろな情報を取り出すことができます。

term_id カテゴリID
name カテゴリ名
slug カテゴリスラッグ
term_group すみません、わからないですw
term_taxonomy_id すみません、わからないですw
taxonomy タクソノミ。おそらくカテゴリorタグorカスタム投稿タイプの種類だと思う。
description カテゴリ説明文
parent 親カテゴリかどうか。0は親カテゴリなし、1は親カテゴリあり。
count そのカテゴリの記事数

これであれば、場所によってカテゴリ順を変えたりすることもできますね。