この記事では現在設定してあるカテゴリーを、リンク付きで一覧表示させる方法を記述しました。
ただカテゴリーを一覧表示させるだけであれば、下記のコードをサイト上の表示したいところにコピペすればOKかと思います。
コードは以下のようになります。
<ul>
<?php
$args = array(
'orderby' => 'id',
'order' => 'ASC'
);
$categories = get_categories( $args );
?>
<?php foreach( $categories as $category ) : ?>
<li>
<a href="<?php echo get_category_link( $category->term_id ); ?>"><?php echo $category->name; ?></a>
</li>
<?php endforeach; ?>
</ul>
基本的には上記コードをコピペすればOKです。
目次
カテゴリー表示方法の解説
「もっと細かい設定をしたい」、「もう少し詳しく知りたい」といった方向けに、少し詳しく解説をします。
今回の場合の手順としては、以下のように出力しました。
- get_categories() でカテゴリー情報を取得
- foreach でカテゴリーの数だけaタグを出力
- get_category_link() でリンクURLを出力
- $category->name でリンクの文字列を出力
get_categories() でカテゴリー情報を取得
まず、現在設定してあるカテゴリーをget_categories( $args )
で取得します。
その際、引数に設定できるパラメーターは以下のようになります。
パラメータ | データ型 | 説明 |
---|---|---|
type | 文字列 | post か link |
child_of | 整数 | カテゴリーIDで子孫カテゴリーを取得 |
parent | 整数 | カテゴリーIDで直接の子カテゴリーを取得 |
orderby | 文字列 | カテゴリーの並び替えを行う。初期値は name。 他 id、slug、count、term_group |
order | 文字列 | 並び順を指定。DESC(降順)/ ASC(昇順) |
hide_empty | 真偽値 | 記事がないカテゴリーを表示を指定。1(true)初期値、2(false) |
hierarchical | 真偽値 | trueが指定されている場合記事がないカテゴリで子カテゴリーに記事があれば表示。1(true)初期値、2(false) |
exclude | 文字列 | 表示したくないカテゴリーを指定。コンマ(、)で数字を区切り昇順で指定 |
include | 文字列 | 表示したいカテゴリーを指定。コンマ(、)で数字を区切り昇順で指定 |
number | 文字列 | カテゴリの上限を指定 |
taxonomy | 文字列、配列 | カテゴリの代わりにタクソノミーから取得 |
pad_counts | 真偽値 | 子カテゴリーを含めてリンクおよび投稿数を計算1(true)、2(false)初期値 |
取得した戻り値
当サイトを例に、先程設定したパラメータで取得した変数の中身がどうなっているか見てみましょう。
var_dump($categories);
で中身を確認すると、戻り値は以下のような配列になっています。
array(4) {
[0]=>
object(WP_Term)#6598 (16) {
["term_id"] => int(1)
["name"] => string(3) "Web"
["slug"] => string(3) "web"
["term_group"] => int(0)
["term_taxonomy_id"] => int(1)
["taxonomy"] => string(8) "category"
["description"] => string(21) "Webに関すること"
["parent"] => int(0)
["count"] => int(1)
["filter"] => string(3) "raw"
["cat_ID"] => int(1)
["category_count"] => int(1)
["category_description"] => string(21) "Webに関すること"
["cat_name"] => string(3) "Web"
["category_nicename"] => string(3) "web"
["category_parent"] => int(0)
}
//以下省略
・
・
・
・
・
・
}
戻り値の説明は以下の通りです。
プロパティ | 型 | 説明 |
---|---|---|
term_id | 整数 | ID |
name | 文字列 | 名前 |
slug | 文字列 | スラッグ |
term_group | 整数 | グループID |
term_taxonomy_id | 整数 | タクソノミーID |
taxonomy | 文字列 | タクソノミー名。カテゴリーの場合は必ず’category’となる |
description | 文字列 | 説明 |
parent | 整数 | 親カテゴリーID。親カテゴリーがない場合は0となる |
count | 整数 | カテゴリーに登録されている投稿数 |
cat_ID | 整数 | カテゴリー ID (term_id にも同じ値が入る) |
category_count | 整数 | カテゴリーに登録されている投稿の数(count にも同じ値が入る) |
category_description | 文字列 | カテゴリーの説明(description にも同じ値が入る) |
cat_name | 文字列 | カテゴリー名(name にも同じ値が入る) |
category_nicename | 文字列 | カテゴリースラッグ名 – カテゴリー名から生成されたスラッグ(slug にも同じ値が入る) |
category_parent | 整数 | 親カテゴリーのID – 親がなければ 0 が入る(parent にも同じ値が入る) |
foreach でカテゴリーの数だけaタグを出力
get_categories( $args )
で取得した変数$categories
をforeachで回してカテゴリーの数だけaタグを作っていきます。
<?php foreach ($categories as $category) : ?>
<a href=""></a>
<?php endforeach; ?>
get_category_link() でリンクURLを出力
aタグのhref属性はget_category_link
の引数に$category->term_id
とすることでカテゴリへのリンクを貼ることができます。
<a href="<?php echo get_category_link($category->term_id); ?>"></a>
つまりは、
<?php echo get_category_link(1); ?>
// 出力結果 → http://ドメイン名/category/カテゴリーID1
とすることで、カテゴリーIDが1へのリンクが生成されているわけです。
$category->name でリンクの文字列を出力
リンクの文字列は$category->name
で出力しています。
<?php echo $category->name; ?>
以上です。
取得する条件を変えたり、表示の仕方を変えたりすることができるので、自由にアレンジしてみてください。