WEB制作のための情報サイト / unazuki Library

get_categories()

基本構文と使い方(引数・実行結果)

基本構文

条件にマッチしたカテゴリーオブジェクトの配列を取得します。ここでいうカテゴリーは、カスタムタクソノミーではなくデフォルトの投稿のカテゴリーを指します。(WordPressインストール時に最初から設定されているカテゴリー)

get_categories($args)

引数

引数必須/任意引数に指定するもの
第1引数
$args
任意取得するカテゴリーの条件(パラメーター)を配列で指定(文字列での指定も可能ですが配列で理解しておく方が柔軟性がありオススメです)。
初期値''(空の文字列)
初期値ではすべてのカテゴリーを取得します。

利用できる主なパラメーターは下記の通り。

orderby 返す値の順番を何順にするか指定、nameやcountなど。省略時はname
order ASC/DESCを指定。ASCは昇順、DESCが降順。省略時はASC
hide_empty 真偽値を指定。trueなら記事件数が0のカテゴリーを除外。省略時はtrue
include 取得するカテゴリーのIDを配列で指定。省略時は空の配列(指定なし)
exclude 取得しないカテゴリーのIDを配列で指定。省略時は空の配列(指定なし)
exclude_tree 子カテゴリーを含めて取得しないカテゴリーのIDを配列で指定
number 取得件数の上限。省略時は全件
name 取得したいカテゴリーの名前あるいはその配列
slug 取得したいカテゴリーのスラッグあるいはその配列
meta_query メタクエリの指定(カスタムフィールドを条件に取得)

すべてのパラメーターは下記公式に記載があります。(英語)
https://developer.wordpress.org/reference/classes/wp_term_query/__construct/

実行結果

戻り値(返す値):条件にマッチしたカテゴリーオブジェクトの配列
取得したカテゴリーオブジェクトを配列として返します。foreachでループを回して配列から1つ1つ要素(カテゴリーのオブジェクト)を取り出してカテゴリーの名前を取得したりすることができます。

the_categories()はthe_terms()のラッパー関数です。the_categories()の内部でthe_terms()を実行しています。the_categories()は内部でthe_terms()を実行する際に、taxonomyの値をcategory(投稿に標準実装されているカテゴリー)にデフォルトで指定します。
このオブジェクトが持つ主なプロパティ(中身)は以下の通りです。

カテゴリーオブジェクトの主なプロパティ

term_id カテゴリーのID
name カテゴリーの名前
slug カテゴリーのスラッグ
taxonomy 所属するタクソノミーの名前(= category)
description カテゴリーの説明文(管理画面からカテゴリーを追加する際の「説明」欄)
count カテゴリーに所属する記事数
cat_ID term_idのエイリアス
cat_name nameのエイリアス
category_nicename slugのエイリアス
category_description descriptionのエイリアス
category_count countのエイリアス

例1.条件にマッチしたカテゴリー情報を取得

<?php
$args = [
	'exclude' => [10, 12], // ID10と12のカテゴリーを除外
	'orderby' => 'count', // 表示する際の順番をcount(記事数)を基準にする
	'order' => 'DESC', // 表示順を降順(この場合、記事件数が多い順)にする
];
$categories = get_categories($args);
foreach ($categories as $category) { // 配列から1つ1つ要素(カテゴリーオブジェクト)を取り出して処理
	echo $category->term_id; // カテゴリーのIDを取得して表示
	echo $category->name; // カテゴリーの名前を取得して表示
}
?>

学習者向け補足情報

【引数とは】
テンプレートタグ(=関数)を実行する際に、引数を渡すことができるテンプレートタグがあります。引数は、関数の中で使われるので、渡す引数の値によって実行結果が変わってきます。何を処理したいのか、どのようなデータを取得したいのかによって渡す引数が変わります。

【引数について】

  • 指定できる引数の数はテンプレートタグによって異なります。(引数なしもあり)
  • 引数ごとに必須 / 任意が決まっています。(必須は必ず指定、任意は指定しなければ初期値)
  • 引数名(例:$post)は仕様の便宜上の名前と考えてください。(この名前自体はテンプレートタグ実行に関係しません。各引数に何を指定するのかを理解していればOKです。)

【オブジェクトとは?】
オブジェクトとはデータの集合体です。例えば1つの記事には、記事の公開日、タイトル、本文など様々なデータがあります。それらを1つのデータにまとめたものがオブジェクトです。WordPressに関わらず、オブジェクトはプログラミングで一般的に使われるデータの集合体を示す言葉です。

【戻り値とは?】
テンプレートタグ(=関数)を実行した結果、返ってくる値のことを戻り値といいます。戻り値を変数に格納してその後の処理に使ったりします。また、テンプレートタグによって、真偽値、オブジェクト、整数など、戻り値の型は様々です。
※戻り値はechoしない限り画面には表示されません。あくまでもプログラミング上で値として返ってくるだけです。戻り値ではなく、値を画面に表示するテンプレートタグもあります。(例:the_title は画面に記事のタイトルを表示するテンプレートタグ)

よくある使い方

ニュースやブログページのサイドバーにカテゴリー一覧を表示するなどで使われます。具体的なコードは下記「参考コード」を参考にしてください。

参考コード

下記例では、カテゴリーの一覧をカテゴリーに紐づく記事が多い順番に表示するコードです。
取得した配列(カテゴリーオブジェクトの配列)からループ処理でカテゴリーオブジェクトを取り出し、そのオブジェクトから必要情報を取得してHTMLに埋め込んでいます。

<?php
$args = [
	'orderby'    => 'count',
	'order'      => 'DESC',
];
$categories = get_categories($args);

if (!empty($categories) && !is_wp_error($categories)) { // 空の配列あるいはエラーではないか
	echo '<ul>';
	foreach ($categories as $category) {
		echo '<li>';
		echo '<a href="' . get_term_link($category) . '">';
		echo $category->name;
		echo '</a> (' . $category->count . ')';
		echo '</li>';
	}
	echo '</ul>';
}
?>

※当サイトでは初期値とデフォルト値の言葉の定義を区別せず、原則統一して初期値を採用しています。

関連するテンプレートタグ

テンプレートタグ 説明
single_term_title() ターム別の記事一覧ページ(taxonomy.phpやarchive.phpなど)にて、現在のカテゴリー名を表示します。
single_cat_title() カテゴリー別の記事一覧ページ(category.phpやarchive.phpなど)にて、現在のカテゴリー名を表示します。
get_the_terms() 投稿に紐づいているターム情報を取得します。
get_the_tags() 投稿に紐づいているタグ情報を取得します。
get_the_category() 投稿に紐づいているカテゴリー情報を取得します。
get_terms() 条件にマッチしたタームオブジェクトの配列を取得します。
get_tags() 条件にマッチしたタグオブジェクトの配列を取得します。
get_term_link() タームのURLを取得します。
get_tag_link() タグのURLを取得します。
get_category_link() カテゴリーのURLを取得します。