MENU

【WordPress】最上位(親)と最下位(子)カテゴリーの情報を取得する方法

通常のカテゴリ取得方法

$category = get_the_category();
$cat_name = $category[0]->cat_name;

カテゴリー名表示

<?php echo $cat_name; ?>

このカテゴリ取得方法での問題点

この方法はget_the_categoryで取得した配列の初め[0]の情報を取得するのだけど、記事のカテゴリーが親子関係で尚且、どちらにもチェックが入っている場合、必ずしも初めの[0]に親カテゴリーの情報が入っているとは限りません。同じカテゴリーにチェックを入れた別の記事ページでは子カテゴリーの情報が入る場合もあり、ページごとに表示がバラバラになってしまいます。

なので直接親カテゴリーを指定する取得方法と子カテゴリー情報を取得する方法を解説。

最上位(親)カテゴリー情報取得

<?php
  $categories = get_the_category();
  foreach($categories as $cat) {
    if($cat->category_parent == 0) {
      $parent_category = $cat;
      break;
    }
  }
  $parentName = $parent_category->name;
  $parentSlug = $parent_category->slug;
  $parentId = $parent_category->term_id;
?>

親カテゴリーの名前を表示

<?php echo $parentName; ?>

親カテゴリーのスラッグを表示

<?php echo $parentSlug; ?>

親カテゴリーのカテゴリーIDを表示※1

<?php echo $parentId; ?>

参考にしたサイト

【WordPress】複数のカテゴリーから親カテゴリーのみ取得する方法

最下位(子)カテゴリー情報取得

最上位(親)カテゴリー情報取得とは異なりfunctions.phpに下記を追加する必要があります。

functions.php

function get_term_descendants ( $post_id ='', $tax_name = 'category' ) {
  $terms = get_the_terms( $post_id, $tax_name );
  if ( empty( $terms )) return false;
  $candidate = $terms;
  $count = count( $terms );
  if ( $count > 1 ): 
    foreach( $terms as $key => $term ):
      foreach( $terms as $term2 ):
        if ( term_is_ancestor_of( $term->term_id, $term2->term_id, $tax_name ) ) {
          unset( $candidate[$key] );
          break;
        }
      endforeach;
    endforeach;
  endif;
  return $candidate;
}

呼び出したい箇所に記述

<?php
  $descends = get_term_descendants();
  if ( $descends ){
    foreach ( $descends as $descend ){
      $descends_category = $descend;
    }
  }
  $descendsName = $descends_category->name;
  $descendsSlug = $descends_category->slug;
  $descendstId = $descends_category->term_taxonomy_id;//category ID
  $descendstParentId = $descends_category->parent;
?>

子カテゴリーの名前を表示

<?php echo $descendsName; ?>

子カテゴリーのスラッグを表示

<?php echo $descendsSlug; ?>

子カテゴリーのカテゴリーIDを表示

<?php echo $descendstId; ?>

子カテゴリーが所属している親カテゴリーのIDを表示※1と同じ意味

<?php echo $descendstParentId; ?>

参考にしたサイト

【WordPress】記事が所属する最下層のカテゴリー名を取得する

おすすめ書籍

WordPress5.3.xに対応し、テーマ作成、プラグインの使用方法、wordpress関数が理解できる、初心者〜中級者向け書籍。

nanimonai

プログラム書く方が楽しいデザイナーです。デザイン事務所→フリーランス→スタートアップ入社→フリーランス(現在)。 全然更新しないのでブログは向いてないと思いつつなんとかやってます。 よければTwitterのフォローもお願いします。

カテゴリー

キーワード

デザインに必須のフリー素材サイト



関連記事