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

get_the_category()

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

基本構文

投稿に紐づいているカテゴリー情報を取得します。記事個別ページ(single.php)で投稿が所属するカテゴリー情報を表示するときや、記事一覧ページ(archive.phpやcategory.phpなど)において、各記事の日付やタイトルと同時にカテゴリーも表示するときなどに使うことが多いです。

get_the_category($post_id);

引数

引数必須/任意引数に指定するもの
第1引数
$post_id
任意投稿のID (数値)
初期値false (初期値では現在の投稿になります)

実行結果

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

get_the_category()はget_the_terms()のラッパー関数です。get_the_category()の内部でget_the_terms()を実行しています。内部でget_the_terms()を実行する際に、タクソノミーを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
$terms = get_the_category();
    foreach ($terms as $term) { // 配列からカテゴリーオブジェクトを1つ1つ取り出して処理
  	echo $term->name; // カテゴリーオブジェクトからかてカテゴリー名を取得して表示
}
?>

学習者向け補足情報

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

【引数について】

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

よくある使い方

記事個別ページ(single.php)で投稿が所属するカテゴリー情報を表示するときや、記事一覧ページ(archive.phpやcategory.phpなど)において、各記事の日付やタイトルと同時にカテゴリーも表示するときなどに使うことが多いです。具体的なコードは下記「参考コード」を参考にしてください。

参考コード

下記の例は、single.phpにて記事情報を表示する際に使える参考コードです。公開日の下に記事が所属するカテゴリー情報が表示されます。

<div class="article">
	<?php if (have_posts()) : ?>
		<?php while (have_posts()) : the_post(); ?>
			<div class="article__date">公開日:<?php echo get_the_date('') ?></div>
			<?php
			$categories = get_the_category();
			if (!empty($categories) && !is_wp_error($categories)) {
				echo '<div class="article__category">';
				foreach ($categories as $category) {
					echo '<span>' . $category->name . '</span>';
				}
				echo '</div>';
			}
			?>
		<?php endwhile; ?>
	<?php endif; ?>
</div>

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

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

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