WordPressのカテゴリページでパンくずを表示する方法

カテゴリには親子関係があります。
祖先 > 親 > 子 ...
なのでカテゴリページにパンくずを表示したいとき、
親カテゴリを持つページでは、祖先をさかのぼって表示をする必要があります。
やりたいこと
・子カテゴリでなければ、祖先はないので何もせず現在のカテゴリを表示。
・子カテゴリであれば、その祖先カテゴリを取得し表示、その後現在のカテゴリを表示。
・子カテゴリでなければ、祖先はないので何もせず現在のカテゴリを表示。
・子カテゴリであれば、その祖先カテゴリを取得し表示、その後現在のカテゴリを表示。
カテゴリページでパンくずを表示する
祖先を取得する為にまずはページの情報を取得してくれる関数を呼び出します。
<?php $category = get_queried_object(); ?>
| get_queried_object() | カテゴリページで呼び出すとタクソノミー情報やカテゴリ情報を返してくれます。 |
|---|
この get_queried_object() を使って表示中のカテゴリが親か子(or孫)かを判別します。
以下まとめです。
<ul>
<li><a href="<?php bloginfo('url'); ?>">HOME</a></li>
<li> > </li>
<?php
// ページの情報を取得
$category = get_queried_object();
// 現在のカテゴリが子であれば以下の処理を行う(0でなければ子)
if ( $category->parent != 0 ):
// 指定したカテゴリIDの祖先IDを配列で取得(子、親、祖先順)
$ancestors_arr = get_ancestors($category->cat_ID, 'category');
// 祖先から表示したいので、上の配列を逆にソート(祖先、親、子順)
$ancestors_arr = array_reverse($ancestors_arr);
// ループで祖先から順にリンク、カテゴリ名を取得し表示
foreach ( $ancestors_arr as $ancestor ): ?>
<li>
<a href=<?php echo get_category_link($ancestor); ?>">
<?php echo get_cat_name($ancestor);?>
</a>
</li>
<li> > </li>
<?php endforeach;
endif;
// 現在のカテゴリ名を表示
// (表示中カテゴリが子でなければ、これだけ表示される) ?>
<li><?php single_cat_title(); ?></li>
</ul>
これでカテゴリを階層形式で表示することができます。
祖先(リンク付き) > 親(リンク付き) > 子
関連記事





