WordPressでカテゴリー名やカテゴリーIDの取得方法でどれを使うのが最適なのかいつも分からなくなるのでメモ。基本はこちらの方の記事が綺麗にまとまっている。
目次
おさらい
タクソノミー とは?
- カテゴリー(WP標準で用意されているタクソノミー )
- タグ(WP標準で用意されているタクソノミー )
- カスタムタクソノミー (独自で追加するタクソノミー の総称)
タームとは?
例えば美味しい食べ物について発信するブログを書いていた場合、カテゴリーとタームの関係は以下のようになる。
タクソノミー 名 | ターム名 | タームID | タームスラッグ |
カテゴリー | 和食 | 1 | japanese |
中華料理 | 2 | chinese | |
イタリアン | 3 | italian |
正式に言えば、タームとは「タクソノミー におけるそれぞれの項目名のこと」である。
本題
本題のget方法ですが基本はget_terms()
を使うのですが、標準で用意されているタクソノミー であるカテゴリーにおいてはget_the_category()
関数が用意されています。
ややこしい点
ややこしいのはget_the_category()
では投稿が0件のカテゴリーを取得してくれなかったり、値を取得したいページのタイプ(single, page, category, index)によってそれぞれの関数が使えたり使えなかったりする点です。
カテゴリーでの取得の場合
<?php
$category = get_the_category();
$cat_id = $category[0]->cat_ID;
$cat_name = $category[0]->cat_name;
$cat_slug = $category[0]->category_nicename;
?>
<!-- カテゴリーIDを表示したい所に -->
<?php echo $cat_id; ?>
<!-- カテゴリー名を表示したい所に -->
<?php echo $cat_name; ?>
<!-- カテゴリースラッグを表示したい所に -->
<?php echo $cat_slug; ?>
カテゴリIDだけはget_query_var()
を使って取得することもできるが汎用性のあるget_the_category()
を使うのが分かりやすいと思われる。
$cat_id = get_query_var('cat');
投稿が0件のカテゴリーも取得したい場合
$categories = get_terms('category', Array('hide_empty' => false));
print_r($categories);
カスタムタクソノミーでの取得の場合
ちょっとこの使い分けが分からなくなったので、また使うときに記事更新していきます。
get_term_by()
$name = single_cat_title( '', false );
$term_meta = get_term_by( 'name', $name, 'category' );
var_dump( $term_meta->term_id );
その他
他にもwp_query
を使った取得が可能ですがより詳しくは引用元であるこちらのブログを見てみてください。
参照
http://weble.org/2011/03/23/wordpress-hide-empty
0