カテゴリーを一覧で表示させる方法【コピペでOK】

カテゴリーを一覧表示

この記事では現在設定してあるカテゴリーを、リンク付きで一覧表示させる方法を記述しました。
ただカテゴリーを一覧表示させるだけであれば、下記のコードをサイト上の表示したいところにコピペすれば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です。

カテゴリー表示方法の解説

「もっと細かい設定をしたい」、「もう少し詳しく知りたい」といった方向けに、少し詳しく解説をします。

今回の場合の手順としては、以下のように出力しました。

  1. get_categories() でカテゴリー情報を取得
  2. foreach でカテゴリーの数だけaタグを出力
  3. get_category_link() でリンクURLを出力
  4. $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; ?>

以上です。

取得する条件を変えたり、表示の仕方を変えたりすることができるので、自由にアレンジしてみてください。

この記事を書いた人

けいた

高校卒業してから15年間勤めた会社を退職→脱サラしてWeb制作。
現在はWordPressサイト構築とShopifyストア構築をメインに、副業で物販をやっています。