Mill's Note

【Wordpress関数】wp_list_categories()

/

カテゴリーの情報を一覧で取得して「リンク と HTMLタグ 付き」で出力。何階層目まで出力するかも指定できる、カテゴリー一覧用のWordpressテンプレートタグ。

パラメータで細かく条件設定でき、簡単にリンク付きカテゴリー一覧を作成できる優れもの。
階層の出力方法も指定もできるので、面倒なテンプレートタグの入れ子をする必要もありません。

taxonomyに「post_tag、タクソノミーslug」を指定することで、タグやカスタムタクソノミーの一覧にも使用できます。

wp_list_categories 呼び出しコード

呼び出しコード説明
<?php wp_list_categories(); ?>パラメータなし
<?php wp_list_categories('depth=0&title_li='); ?>直接指定 = パラメータが少ない場合など
<?php
  $args = array(
    'title_li'   => '',
    'depth'      => '0',
    'show_count' => true
  );
  wp_list_categories($args );
?>
引数を代入 = パラメータが多い場合など

wp_list_categories() パラメータ

パラメータ初期値設定できる値説明
taxonomycategorypost_tag、タクソノミーslugタクソノミーを指定
show_option_allトップページリンク用テキスト記載時、トップページリンクを表示
show_option_none代替テキスト記載時、カテゴリーがない場合の代替テキストを表示
use_desc_for_title11(カテゴリー説明)、0(カテゴリー名)title属性に設定
show_last_update01(表示)、0(表示しない)最終更新日
show_count01(表示)、0(表示しない)投稿数
hide_empty11 (表示しない)、0 (表示)投稿のないカテゴリー
hierarchical11 (含める)、0 (含めない)「空の親カテの子カテに投稿がある」場合、
親カテを含める
pad_counts01(計算する)、0(計算しない)子カテゴリーを含めて投稿数を計算
depth00、-1、1、n取得階層
 0 = 全て (ul, li 階層あり)
-1 = 全て (ul, li 階層なし)
 1 = 最上位階層のみ (ul, li)
 n = 最上位階層からn階層まで (ul, li 階層あり)
title_liカテゴリー”、 タイトル文字列'title_li'=>'' を指定推奨
hide_title_if_empty01(表示)、0(表示しない)空のタイトル
'title_li'=>'' を指定しない場合のみ
echo11(表示)、0(値を返す)変数として利用する場合は 0
stylelistlist(ul, li)、none(aタグ並列)出力形式
separator<br />区切り文字列'style'=>'none' を指定した場合のみ
orderbynamecount、name、slug、id 等ソート対象
orderASCASC(昇順)、DESC(降順)ソート順
number取得件数省略時は条件に一致するすべてを取得
includeカテゴリーID /複数時 , 区切り指定カテゴリーのみ
excludeカテゴリーID /複数時 , 区切り取得しないカテゴリー
exclude_treeカテゴリーID /複数時 , 区切り取得しないカテゴリー(子孫カテゴリー含む)
child_of0カテゴリーID指定カテゴリーの子孫カテゴリーを取得
current_category0カテゴリーID
各ページに対応させるには
ID用の変数を設定する必要がある
対象は投稿ページのみ
・投稿に含まれるカテゴリー[0] に current-cat
・親カテゴリーに current-cat-parent
という class を付与
主要なパラメータを記載 / 他のパラメータはGoogle様でm(__)m

wp_list_categories() の使用例

wp_list_categories() は、パラメータ指定に合わせ自動的に成形された状態で出力されます

最低限のパラメータ( 'title_li'=>'' )のみのシンプルな設定

<ul><li> のリスト形式で出力。
'title_li'=>'' を設定した場合、別途<ul></ul>やタイトルを設置する必要があります。

アーカイブページ(カテゴリー一覧ページ等) では、そのカテゴリーに current-cat というclass が付与されます。

PHP
<h2>カテゴリー一覧</h2>
<ul>
<?php wp_list_categories('title_li='); ?>
<ul>
/* 出力結果 */
<h2>カテゴリー一覧</h2>
<ul>
  <li class="cat-item cat-item-ID current-cat"><a href="カテゴリーURL" title="カテゴリー説明">カテゴリー名</a></li>
  <li class="cat-item cat-item-ID"><a href="カテゴリーURL" title="カテゴリー説明">カテゴリー名</a></li>
  <li class="cat-item cat-item-ID"><a href="カテゴリーURL" title="カテゴリー説明">カテゴリー名</a>
    <ul class="children">
      <li class="cat-item cat-item-ID"><a href="子カテゴリーURL" title="子カテゴリー説明">子カテゴリー名</a></li>
      <li class="cat-item cat-item-ID"><a href="子カテゴリーURL" title="子カテゴリー説明">子カテゴリー名</a></li>
    </ul>
  </li>
  <li class="cat-item cat-item-ID"><a href="カテゴリーURL" title="カテゴリー説明">カテゴリー名</a></li>
</ul>

パラメータを設置しない場合

タイトルも<ul> 内に含まれ、構造上(SEO的にも)あまりお勧めできません。

PHP
/* 出力結果 */
<ul>
 <li class="pagenav">カテゴリー
    <ul>
      <li class="cat-item cat-item-ID current-cat"><a href="カテゴリーURL" title="カテゴリー説明">カテゴリー名</a></li>
      <li class="cat-item cat-item-ID"><a href="カテゴリーURL" title="カテゴリー説明">カテゴリー名</a>
        <ul class="children">
          <li class="cat-item cat-item-ID"><a href="子カテゴリーURL" title="子カテゴリー説明">子カテゴリー名</a></li>
          <li class="cat-item cat-item-ID"><a href="子カテゴリーURL" title="子カテゴリー説明">子カテゴリー名</a></li>
        </ul>
      </li>
      <li class="cat-item cat-item-ID"><a href="カテゴリーURL" title="カテゴリー説明">カテゴリー名</a></li>
    </ul>
  </li>
</ul>