WordPress
カスタマイズ事例

WORDPRESS CUSTOMIZATION

詳細ページやカスタムタクソノミー(カテゴリー)ページにおけるターム(カテゴリー)の取得方法まとめ

カテゴリーやターム(カスタム投稿タイプ記事のカテゴリ)の取得方法は、詳細ページ、カスタムタクソノミー(カテゴリー)ページ、それぞれに異なります。
そしてたまに、どっちだったか、割とWordPressに慣れ親しんでいる私自身もちょっと忘れてしまったりします。。。

そこで今回は、詳細ページやカスタムタクソノミー(カテゴリー)ページにおけるターム(カテゴリー)の取得方法について、おもに私自身のために今さらですがまとめておきたいと思います。
同じことで悩むみなさんも参考としてご活用ください。
 

投稿カテゴリーの取得

投稿カテゴリーページ上で自分のカテゴリーを取得する

$cat_id = (int)get_query_var('cat'); //カテゴリーID
$the_cat =  get_category($cat_id);
$cat_name = $the_cat->name; //カテゴリー名
$cat_slug = $the_cat->slug; //カテゴリースラッグ

//ついでにタグ
$tag_id = (int)get_query_var('tag_id'); //タグID
$the_tag =  get_tag($tag_id);
$tag_name = $the_tag->name; //タグ名
$tag_slug = $the_tag->slug; //タグスラッグ

ついでに、投稿カテゴリーページ上で自分のカテゴリーの最上位の親カテゴリーを取得する

if(is_category()){
  while ( $the_cat->parent ){
    $the_cat = get_category( $the_cat->parent );
  }
  $parent_cat_slug = $the_cat->slug; //最上位親カテゴリースラッグ
  $parent_cat_name = $the_cat->name; //最上位親カテゴリー名
  $parent_cat_id = $the_cat->term_id; //最上位カテゴリーID
}

投稿詳細ページ上で自分のカテゴリーを取得する

$the_cat = get_the_category();
$cat_name = $the_cat[0]->name; //カテゴリー名
$cat_slug = $the_cat[0]->slug; //カテゴリースラッグ
$cat_id   = (int)$the_cat[0]->cat_ID; //カテゴリーID
//※ 複数カテゴリに属する記事などで、所属カテゴリーを全部取りたければ、$the_catをfor文やforeach文で回せばOK

ついでに、投稿詳細ページ上で自分のカテゴリーの最上位の親カテゴリーを取得する

$the_cat = get_the_category();
$cat_name = $the_cat[0]->name; //カテゴリー名
$cat_slug = $the_cat[0]->slug; //カテゴリースラッグ
$cat_id   = (int)$the_cat[0]->cat_ID; //カテゴリーID

$parents = get_category_parents($cat_id, false, ',', true);
if ($parents) {
  $parents = explode(',', $parents);
  $root_cat = get_category_by_slug($parents[0]);
  $cat_name = $root_cat->name; //カテゴリー名
  $cat_slug = $root_cat->slug; //カテゴリースラッグ
  $cat_id   = (int)$root_cat->cat_ID; //カテゴリーID
}

 

タームの取得

カスタムタクソノミーページ上で自分のタームを取得する

$taxonomy = 'XXXXXX'; //カスタムタクソノミースラッグ
$term_slug = get_query_var('term'); //タームスラッグ
$the_term = get_term_by('slug', $term_slug, $taxonomy);
$term_name = $the_term->name; //ターム名
$current_menu_id = (int)$the_term->term_id; //タームID

カスタム投稿詳細ページ上で自分のタームを取得する

$taxonomy = 'XXXXXX'; //カスタムタクソノミースラッグ
$taxonomy_terms_cat = wp_get_object_terms($post->ID, $taxonomy);
$taxonomy_terms_cat_name = $taxonomy_terms_cat[0]->name; //ターム名
$taxonomy_terms_cat_slug = $taxonomy_terms_cat[0]->slug; //タームスラッグ
$current_menu_id = (int)$taxonomy_terms_cat[0]->term_id; //タームID
//※ 複数タームに属する記事などで、所属タームを全部取りたければ、$taxonomy_terms_catをfor文やforeach文で回せばOK

ループ内で各カスタム投稿のタームを取得する

(タームを取得する関数が違うだけです)

$taxonomy = 'XXXXXX'; //カスタムタクソノミースラッグ
$taxonomy_terms_cat = get_the_terms($post->ID, $taxonomy);
$taxonomy_terms_cat_name = $taxonomy_terms_cat[0]->name; //ターム名
$taxonomy_terms_cat_slug = $taxonomy_terms_cat[0]->slug; //タームスラッグ
$current_menu_id = (int)$taxonomy_terms_cat[0]->term_id; //タームID
//※ 複数タームに属する記事などで、所属タームを全部取りたければ、$taxonomy_terms_catをfor文やforeach文で回せばOK

【100ウェブ新着情報メルマガ】

WordPressカスタマイズ事例やウェブ制作ノウハウの新着情報、お役立ち情報を
リアルタイムにメルマガ配信!