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

カスタム

wpphp_catebread

カテゴリには親子関係があります。

祖先 > 親 > 子 ...

なのでカテゴリページにパンくずを表示したいとき、
親カテゴリを持つページでは、祖先をさかのぼって表示をする必要があります。

やりたいこと
・子カテゴリでなければ、祖先はないので何もせず現在のカテゴリを表示。
・子カテゴリであれば、その祖先カテゴリを取得し表示、その後現在のカテゴリを表示。

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

祖先を取得する為にまずはページの情報を取得してくれる関数を呼び出します。

<?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>

これでカテゴリを階層形式で表示することができます。

祖先(リンク付き) > 親(リンク付き) > 子

カスタム

関連記事