1. HOME
  2. 開発・ブログ運営
  3. WordPress
  4. wp_list_categories() を使わずに get_terms() でカテゴリ一覧を表示する
2012年02月11日
WordPress3 でブログを立ち上げてみた
2012年05月19日
WordPress3 をインストールする手順
2012年02月12日
WordPress3 のテーマを変更しました
2012年06月04日
WordPress でカテゴリ一覧を取得する場合は get_t ...
2014年09月25日
WordPress で簡単にスマホ対応出来るプラグイン WPt ...
2012年06月20日
WordPress で特定のカテゴリだけを非表示にしてみた。w ...

wp_list_categories() を使わずに get_terms() でカテゴリ一覧を表示する

WordPress でカテゴリ一覧を取得する場合は、wp_list_categories() を用いることが多いようですが、wp_list_categories() は余計な <li> タグなどを一緒に生成するのでイマイチ使い勝手が悪い。

wp_list_categories() を使わずにカテゴリ名などを取得する場合は、get_terms() を使って直接 DB からデータを取得するらしい。

参考URL:WordPressで全てのカテゴリー構造を取得する方法 | とりさんのソフト屋さん

上記、参考URL で紹介されている自作の関数を、ちょこっとだけ修正して利用させてもらうことにしてみる。

修正個所は、get_terms() の引数の &orderby=id を削除しただけ。理由は、私のブログでは Category Order というプラグインでカテゴリの順序を並べ替えていますが、get_terms() するときに orderby を指定してしまうと Category Order の設定が有効にならないためです。

うまく並ばずちょっと悩みましたが Category Order の Readme にちゃんと書いてありました・・

修正後の関数はこんな感じ。

っで、wp_list_categories() でカテゴリ一覧を出力している部分を、

に変更します。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 のみなので、

こんな感じで URL が取得できます。

参考URL:関数リファレンス/get category link | WordPress Codex 日本語版

このブログでは、ページ上部のカテゴリ一覧をこのエントリの方法で表示しています。サイドバーのカテゴリ一覧はデフォルトのウィジェット。

でわでわ。

<追記:2011/06/08>

カテゴリ一覧を取得するだけなら、get_terms() じゃなくて get_categories() を使った方がよさげ

参照:WordPress でカテゴリ一覧を取得する場合は get_terms() じゃなくて get_categories() を使うべし







「wp_list_categories() を使わずに get_terms() でカテゴリ一覧を表示する」に頂いたコメント & トラックバック

  1. […] wp_list_categories() を使わずに get_terms() でカテゴリ一覧を表示する | MacBook Air … […]

この記事にコメントする





Copyright © 2012 - 2014 MacBook Air とWordPressでこうなった All rights reserved
Powered by WordPress.