WordPressでカテゴリ情報を取得する

WordPressでカテゴリ情報を取得する方法をいくつか試してみます。

カテゴリの分類

WordPressでカテゴリ情報を取得する関数はいろいろと用意されていますが、今回は「カテゴリ情報一式の取得」「単一カテゴリ取得」「特定の記事に紐づいたカテゴリ情報取得」の3つに分類して試してみます。

今回の例では以下のようなカテゴリを使用します。

  • カテゴリーA(ID:1, slug:cata) 投稿数: 2件 説明: カテゴリAの説明文です
    • カテゴリーA-2(ID:5, slug:cata-2) 投稿数: 2件 説明: カテゴリA-2の説明文です
  • カテゴリーB(ID:3, slug:catb) 投稿数: 3件 説明: カテゴリBの説明文です
    • カテゴリーB-2(ID:12, slug:catb-2) 投稿数: 0 説明: カテゴリB-2の説明文です
  • カテゴリーC(ID:4, slug:catc) 投稿数: 0件 説明: カテゴリCの説明文です

カテゴリ情報一式の取得

まずは登録されているカテゴリ情報一式を取得する場合です。

get_categories()

get_categories()はカテゴリ情報を配列形式で一式取得できます。
上記で示したカテゴリ情報を取得して、主要な項目を出力してみます。

<?php $categories = get_categories(); ?>
<ul>
<?php foreach($categories as $category): ?>
  <li>
  ID: <?php echo $category->term_id; ?>
  カテゴリー名: <?php echo $category->name; ?>
  スラッグ: <?php echo $category->slug; ?>
  説明文: <?php echo $category->description; ?>
  親カテゴリーID: <?php echo $category->parent; ?>
  投稿数: <?php echo $category->count; ?>
  </li>
<?php endforeach; ?>
</ul>

出力結果は以下の通りです。

<ul>
  <li>
  ID: 1
  カテゴリー名: カテゴリA
  スラッグ: cata
  説明文: カテゴリAの説明文です
  親カテゴリーID: 0
  投稿数: 2
  </li>
  <li>
  ID: 5
  カテゴリー名: カテゴリA-2
  スラッグ: cata-2
  説明文: カテゴリA-2の説明文です
  親カテゴリーID: 1
  投稿数: 2
  </li>
  <li>
  ID: 3
  カテゴリー名: カテゴリB
  スラッグ: catb
  説明文: カテゴリBの説明文です
  親カテゴリーID: 0
  投稿数: 3
  </li>
</ul>

引数を設定しなかった場合、並び順は名前順で、記事の紐づいていないカテゴリは出力されない(ただし記事の紐づいている子カテゴリがある場合、その親カテゴリの記事数が0件でも出力される)ようになっています。
get_categories()については以前に記事を投稿していますので、具体的な使用例などはそちらをご確認ください。

get_terms()

get_terms()はタクソノミーのタームを取得する関数ですが、引数に’category’を指定することでカテゴリでも利用できます。

<?php $terms = get_terms('category'); ?>
<ul>
<?php foreach($terms as $category): ?>
  <li>
  ID: <?php echo $category->term_id; ?>
  カテゴリー名: <?php echo $category->name; ?>
  スラッグ: <?php echo $category->slug; ?>
  説明文: <?php echo $category->description; ?>
  親カテゴリーID: <?php echo $category->parent; ?>
  投稿数: <?php echo $category->count; ?>
  </li>
<?php endforeach; ?>
</ul>

出力結果

<ul>
  <li>
  ID: 1
  カテゴリー名: カテゴリA
  スラッグ: cata
  説明文: カテゴリAの説明文です
  親カテゴリーID: 0
  投稿数: 2
  </li>
  <li>
  ID: 5
  カテゴリー名: カテゴリA-2
  スラッグ: cata-2
  説明文: カテゴリA-2の説明文です
  親カテゴリーID: 1
  投稿数: 2
  </li>
  <li>
  ID: 3
  カテゴリー名: カテゴリB
  スラッグ: catb
  説明文: カテゴリBの説明文です
  親カテゴリーID: 0
  投稿数: 3
  </li>
</ul>

get_terms()も以前に記事を投稿していますので、詳しくはそちらをご確認ください。

単一カテゴリ取得

次に単一カテゴリを取得する場合です。

get_category_by_slug()

get_category_by_slug()は引数に指定したスラッグと一致するカテゴリ情報を返します。

<?php $category = get_category_by_slug('cata'); ?>
ID: <?php echo $category->term_id; ?>
カテゴリー名: <?php echo $category->name; ?>
スラッグ: <?php echo $category->slug; ?>
説明文: <?php echo $category->description; ?>
親カテゴリーID: <?php echo $category->parent; ?>
投稿数: <?php echo $category->count; ?>

出力結果

ID: 1
カテゴリー名: カテゴリA
スラッグ: cata
説明文: カテゴリAの説明文です
親カテゴリーID: 0
投稿数: 2

get_cat_ID()

get_cat_ID()は引数に指定したカテゴリ名と一致するカテゴリのIDを返します。

<?php $category = get_cat_ID('カテゴリA'); ?>
ID: <?php echo $category; ?>

出力結果

ID: 1

get_cat_name()

get_cat_name()は引数に指定したカテゴリIDと一致するカテゴリ情報のカテゴリ名を返します。

<?php $category = get_cat_name(1); ?>
カテゴリー名: <?php echo $category; ?>
<hr>

出力結果

カテゴリー名: カテゴリA

get_term()

get_term()は第一引数に指定したIDと一致するターム情報を返しますが、第二引数に’category’を指定することでカテゴリでも利用できます。

<?php $term = get_term(1, 'category'); ?>
ID: <?php echo $term->term_id; ?>
カテゴリー名: <?php echo $term->name; ?>
スラッグ: <?php echo $term->slug; ?>
説明文: <?php echo $term->description; ?>
親カテゴリーID: <?php echo $term->parent; ?>
投稿数: <?php echo $term->count; ?>

出力結果

ID: 1
カテゴリー名: カテゴリA
スラッグ: cata
説明文: カテゴリAの説明文です
親カテゴリーID: 0投稿数: 2

get_term_by()

get_term_by()は第一引数と第二引数に指定した条件と値に基づいてターム情報を返しますが、第三引数に’category’を指定することでカテゴリでも利用できます。

<?php $term = get_term_by('slug', 'cata', 'category'); ?>
ID: <?php echo $term->term_id; ?>
カテゴリー名: <?php echo $term->name; ?>
スラッグ: <?php echo $term->slug; ?>
説明文: <?php echo $term->description; ?>
親カテゴリーID: <?php echo $term->parent; ?>
投稿数: <?php echo $term->count; ?>

出力結果

ID: 1
カテゴリー名: カテゴリA
スラッグ: cata
説明文: カテゴリAの説明文です
親カテゴリーID: 0
投稿数: 2

第一引数にはslug以外にもterm_idやnameなどが指定できます。

<?php $term = get_term_by('term_id', 3, 'category'); ?>
ID: <?php echo $term->term_id; ?>
カテゴリー名: <?php echo $term->name; ?>
スラッグ: <?php echo $term->slug; ?>
説明文: <?php echo $term->description; ?>
親カテゴリーID: <?php echo $term->parent; ?>
投稿数: <?php echo $term->count; ?>

出力結果

ID: 3
カテゴリー名: カテゴリB
スラッグ: catb
説明文: カテゴリBの説明文です
親カテゴリーID: 0
投稿数: 3

get_category_link()

get_category_link()は引数に指定したカテゴリIDと一致するカテゴリの一覧ページへのリンクを返します。

<?php $link = get_category_link(1); ?>
リンク: <?php echo $link; ?>
リンク: http://XXXXX/xxxxx/category/cata/

single_cat_title()

single_cat_title()はカテゴリ別一覧ページでカテゴリ名を返し、それ以外のページではNULLを返します。
第二引数でfalseを指定していない場合、取得ではなく出力になります。

<?php $cat_title = single_cat_title('', false); ?>
カテゴリー名: <?php echo $cat_title; ?>
カテゴリー名: カテゴリA

特定の記事に紐づいたカテゴリ情報取得

最後に記事詳細ページや記事のループ内で主に使用する、特定の記事に紐づいたカテゴリ情報を取得する場合です。

get_the_category()

get_the_category()は現在の記事または引数に指定した記事IDの記事に紐づくカテゴリ情報を返します。

<?php $category = get_the_category(); ?>
<ul>
<?php foreach($category as $cat): ?>
  <li>
  ID: <?php echo $cat->term_id; ?>
  カテゴリー名: <?php echo $cat->name; ?>
  スラッグ: <?php echo $cat->slug; ?>
  説明文: <?php echo $cat->description; ?>
  親カテゴリーID: <?php echo $cat->parent; ?>
  投稿数: <?php echo $cat->count; ?>
  </li>
<?php endforeach; ?>
</ul>

固定ページなどでは空配列が返ってきますが、記事詳細や記事のループ内で使用した場合は以下のように取得できます。

<ul>
  <li>
  ID: 1
  カテゴリー名: カテゴリA
  スラッグ: cata
  説明文: カテゴリAの説明文です
  親カテゴリーID: 0
  投稿数: 2
  </li>
  <li>
  ID: 5
  カテゴリー名: カテゴリA-2
  スラッグ: cata-2
  説明文: カテゴリA-2の説明文です
  親カテゴリーID: 1
  投稿数: 2
  </li>
  <li>
  ID: 3
  カテゴリー名: カテゴリB
  スラッグ: catb
  説明文: カテゴリBの説明文です
  親カテゴリーID: 0
  投稿数: 3
  </li>
</ul>

参考サイト

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年5月
 1234
567891011
12131415161718
19202122232425
262728293031