現在のカテゴリの親カテゴリを表示したい〜WordPress

Tips

現在のカテゴリを表示するにはthe_category()を使います。
子カテゴリの場合に子カテゴリ名と親カテゴリ名も表示したい場合はthe_category(‘-‘,’multiple’)とします。第一引数の-は区切り文字ですから好きな記号を設定できます。
子カテゴリの場合に親カテゴリ名のみ表示をしたい場合はちょっと工夫が必要になります。

カテゴリページで親カテゴリ名のみ表示
例1(single.phpで問題が出る)

<?php 
$ch_cat = get_category($cat);
if ($ch_cat->parent) {
  $parent = get_category($ch_cat->parent);
  echo esc_attr($parent->cat_name);
}
?>

カテゴリページでは、$catは現在表示されているページのカテゴリIDの値が入ります。
get_category()はカテゴリー ID またはカテゴリーオブジェクトを指定して、カテゴリーの詳細データを取得します。
つまり該当カテゴリのオブジェクトを取得してカテゴリ情報を得ます。
取得したオブジェクトから親カテゴリの情報をメンバから取得しています。
echo esc_attrで親カテゴリ名を書き出しています。

attribute_escape()は非推奨の関数になりますので、esc_attr()で書き出します。

上の書き方はカテゴリページでしか使えません。
例えばsingle.phpで使用する場合には次のようにします。get_the_category()でカテゴリ情報を配列で取り出しています。

例2

<?php
$cats = get_the_category();
$cat = $cats[0];
if($cat->parent){
$parent = get_category($cat->parent);
echo $parent->cat_name;
}else{
echo $cat->cat_name;
}
?>

get_the_category()は該当ページのカテゴリ情報を配列で取得できる関数で、get_category()は何らか引数にカテゴリ情報を入れて特定のカテゴリ情報を得たい場合に使用します。

今回の目的の場合は下の例2の方法が応用範囲が広いです。

コメント

  1. […] 現在のカテゴリの親カテゴリを表示したい〜WordPress […]

タイトルとURLをコピーしました