カテゴリを条件を絞って複数取得したい。get_categoriesのパラメーターの意味を簡単に教えて欲しい

そんな疑問にお答えします。
この記事ではget_categoriesの使い方を解説します。get_categoriesは指定する条件で複数カテゴリーを取得できるテンプレートタグです。
記事の前半では基本的な使い方をご紹介し、後半部分では実際に使えるサンプルコードを複数載せていますので使い方をより具体的にイメージできます。
このページの目次
get_categoriesの使い方
基本的なget_categoriesの使い方をみていきましょう。get_categoriesはパラメーターを配列で指定しカテゴリーを配列形式で取得することができます。
特定のカテゴリを1つだけ取得する場合は
を使った取得方法もあります。
get_categoriesの記述方法
get_categoriesはパラメーターを配列形式で渡します。
<?php get_categories( $args ); ?>
パラメーターの初期値
<?php
$args = array(
'type' => 'post',
'child_of' => 0,
'parent' => '',
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => 1,
'hierarchical' => 1,
'exclude' => '',
'include' => '',
'number' => '',
'taxonomy' => 'category',
'pad_counts' => false
);
?>
パラメーターの解説
プロパティ名 | データ型 | 解説 |
---|---|---|
type | 文字列 | postかlinkだがlinkは非推奨 |
child_of | 整数 | カテゴリーIDで子孫カテゴリーを取得 |
parent | 整数 | カテゴリーIDで直接の子カテゴリーを取得 |
orderby | 文字列 | カテゴリーの並び替えを行う。指定する文字列はid、 name(初期値)、slug、count,term_group |
hide_empty | 理論値 | 記事がないカテゴリーを表示を指定。1(true)初期値、2(false) |
hierarchical | 理論値 | trueが指定されている場合記事がないカテゴリで子カテゴリーに記事があれば表示。1(true)初期値、2(false) |
exclude | 文字列 | 表示したくないカテゴリーを指定。コンマ(、)で数字を区切り昇順で指定 |
include | 文字列 | 表示したいカテゴリーを指定。コンマ(、)で数字を区切り昇順で指定 |
number | 文字列 | カテゴリの上限を指定 |
taxonomy | 文字列、配列 | カテゴリの代わりにタクソノミーから取得 |
pad_counts | 理論値 | 子カテゴリーを含めてリンクおよび投稿数を計算1(true)、2(false)初期値 |
戻り値
戻り値
戻り値は配列になり以下のような形になります。
array(9) {
[0]=>
object(WP_Term)#5839 (16) {
["term_id"]=>
int(2)
["name"]=>
string(8) "Hokkaido"
["slug"]=>
string(8) "hokkaido"
["term_group"]=>
int(0)
["term_taxonomy_id"]=>
int(2)
["taxonomy"]=>
string(8) "category"
["description"]=>
string(0) ""
["parent"]=>
int(0)
["count"]=>
int(2)
["filter"]=>
string(3) "raw"
["cat_ID"]=>
int(2)
["category_count"]=>
int(2)
["category_description"]=>
string(0) ""
["cat_name"]=>
string(8) "Hokkaido"
["category_nicename"]=>
string(8) "hokkaido"
["category_parent"]=>
int(0)
}
}
実際には複数オブジェクトがありますがここでは先頭の1つを例として表示しています。
プロパティ名 | データ型 | 解説 |
---|---|---|
term_id | 整数 | カテゴリーID |
name | 文字列 | カテゴリー名 |
slug | 文字列 | カテゴリーのスラッグ |
term_group | 文字列 | カテゴリのーグループ |
term_taxonomy_id | 整数 | カテゴリーのタクソノミーID |
taxonomy | 文字列 | タクソノミー名 |
parent | 整数 | 親カテゴリーのID |
count | 整数 | カテゴリーに登録されている投稿の数 |
filter | 文字列 | フィルタ名 |
cat_ID | 整数 | カテゴリーID |
category_count | 整数 | カテゴリーに登録されている投稿の数 |
category_description | 文字列 | カテゴリーの説明 |
cat_name | 文字列 | カテゴリー名 |
category_nicename | 文字列 | カテゴリースラッグ名 – カテゴリー名から生成されたスラッグ |
category_parent | 整数 | 親カテゴリーの ID – 親がなければ 0 が入る |
戻り値はget_categoryの戻り値のオブジェクトを配列にしたものです。
最上位のカテゴリーをカテゴリ名順でリンク付きで出力する
$args = array(
'orderby' => 'name', //カテゴリ名順に並び替え
'parent' => 0 //最上位のカテゴリを指定
);
$categories = get_categories( $args );
foreach ( $categories as $category ) {
echo '<a href="' . get_category_link( $category->term_id ) . '">' . $category->name . '</a><br/>';
}
?>
HTML出力例
<a href="http://wp-fan.com/category/hokkaido/">Hokkaido</a><br/>
<a href="http://wp-fan.com/category/tips/">TIPS</a><br/>
<a href="http://wp-fan.com/category/uncategorized/">Uncategorized</a><br/>
<a href="http://wp-fan.com/category/rental-server/">レンタルサーバー</a><br/>
<a href="http://wp-fan.com/category/%e5%a4%a7%e5%88%86%e7%9c%8c/">大分県</a><br/>
<a href="http://wp-fan.com/category/%e8%8c%a8%e5%9f%8e%e7%9c%8c/">茨城県</a><br/>
<a href="http://wp-fan.com/category/%e8%a6%aa%e3%82%ab%e3%83%86%e3%82%b4%e3%83%aa/">親カテゴリ</a><br/>
<a href="http://wp-fan.com/category/%e9%95%b7%e5%b4%8e%e7%9c%8c/">長崎県</a><br/>
画面表示例
HokkaidoTIPS
Uncategorized
レンタルサーバー
大分県
茨城県
親カテゴリ
長崎県
リンク先は#に変更しています。get_category_linkはカテゴリIDを指定するとURLを取得できます。
カテゴリの出力件数を指定する
<?php
$args = array(
'orderby' => 'name',
'parent' => 0,
'number' => "3" //取得する件数を3に指定
);
$categories = get_categories( $args );
foreach ( $categories as $category ) {
echo '<a href="' . get_category_link( $category->term_id ) . '">' . $category->name . '</a><br/>';
}
?>
先ほどの記述例に件数を3件と指定し記述しました。
HTML出力内容
<a href="http://wp-fan.com/category/hokkaido/">Hokkaido</a><br/>
<a href="http://wp-fan.com/category/tips/">TIPS</a><br/>
<a href="http://wp-fan.com/category/uncategorized/">Uncategorized</a><br/>
画面表示例
HokkaidoTIPS
Uncategorized
まとめ
get_categoriesの使い方を解説しました。サンプルコードとは別にリンクがついたカテゴリをリスト形式で取得する場合はwp_list_categoriesというタグも用意されているので使い分けましょう!