WordPressにおけるカテゴリー周りの取得方法まとめ

WordPressでカテゴリー名やカテゴリーIDの取得方法でどれを使うのが最適なのかいつも分からなくなるのでメモ。基本はこちらの方の記事が綺麗にまとまっている。

おさらい

タクソノミー とは?

  • カテゴリー(WP標準で用意されているタクソノミー )
  • タグ(WP標準で用意されているタクソノミー )
  • カスタムタクソノミー (独自で追加するタクソノミー の総称)

タームとは?

例えば美味しい食べ物について発信するブログを書いていた場合、カテゴリーとタームの関係は以下のようになる。

タクソノミー 名ターム名タームIDタームスラッグ
カテゴリー和食1japanese
中華料理2chinese
イタリアン3italian

正式に言えば、タームとは「タクソノミー におけるそれぞれの項目名のこと」である。

本題

本題の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
Translate »