
wp_list_categories() を使わずにカテゴリ名などを取得する場合は、get_terms() を使って直接 DB からデータを取得するらしい。
参考URL:WordPressで全てのカテゴリー構造を取得する方法 | とりさんのソフト屋さん
上記、参考URL で紹介されている自作の関数を、ちょこっとだけ修正して利用させてもらうことにしてみる。
修正個所は、get_terms() の引数の &orderby=id を削除しただけ。理由は、私のブログでは Category Order というプラグインでカテゴリの順序を並べ替えていますが、get_terms() するときに orderby を指定してしまうと Category Order の設定が有効にならないためです。
うまく並ばずちょっと悩みましたが Category Order の Readme にちゃんと書いてありました・・
修正後の関数はこんな感じ。
function get_all_category_all() {
if ( ! $cat_all = wp_cache_get( 'all_category_all', 'category' ) ) {
$cat_all = get_terms( 'category', 'fields=all&get=all' );
wp_cache_add( 'all_category_all', $cat_all, 'category' );
}
return $cat_all;
}
?>
っで、wp_list_categories() でカテゴリ一覧を出力している部分を、
$terms = get_all_category_all();
foreach ($terms as $term) { ?>
<li><a href="<?= get_category_link($term->term_id); ?>">
<?= $term->name; ?>
</a></li>
に変更します。foreach() の中で、$term から個々のカテゴリ情報にアクセスできますので、カテゴリ名なり、カテゴリID なり必要な情報を取得して、条件分岐するなりすれば、カテゴリ表示が柔軟になります。
$term でアクセスできる情報は以下のとおり。
- term_id → ID
- name → カテゴリ名
- slug → スラグ
- term_group → タームグループ
- term_taxonomy_id → タクソノミID
- taxonomy → タクソノミ 名
- description → 説明
- parent → 親カテゴリ
- count → 記事数
参考URL:Function Reference/get terms | WordPress.org codex
(タームグループってなんだろ?)
カテゴリアーカイブへの URL は $term からは取得できず、get_category_link() を使うようで、引数は カテゴリ ID のみなので、
get_category_link($term->term_id);
こんな感じで URL が取得できます。
参考URL:関数リファレンス/get category link | WordPress Codex 日本語版
このブログでは、ページ上部のカテゴリ一覧、
をこのエントリの方法で表示しています。サイドバーのカテゴリ一覧はデフォルトのウィジェット。
でわでわ。
<追記:2011/06/08>
カテゴリ一覧を取得するだけなら、get_terms() じゃなくて get_categories() を使った方がよさげ
参照:WordPress でカテゴリ一覧を取得する場合は get_terms() じゃなくて get_categories() を使うべし
[…] wp_list_categories() を使わずに get_terms() でカテゴリ一覧を表示する | MacBook Air … […]