single.phpでパンくずリスト

single.phpで、

(prefix) » カテゴリー1 » カテゴリー2 » カテゴリー3 » 件名

というようなパンくずを出したい。
パンくずリスト作成のために、Breadcrumb Navigation XTを使用。

カテゴリーの階層が2階層以上で、最下層のカテゴリーをあてた投稿記事では、

	$mybreadcrumb->opt['singleblogpost_category_display'] = true;

としても、single.phpでは、最下層のカテゴリーへのリンクしか出ない。

(prefix) » カテゴリー3 » 件名

という具合。
category.phpでは、階層構造がすべて表示される。

	//Display a prefix(prefixの記述)

のあとに、

	if(is_single()) {
		echo(get_category_parents($cat, true, " » "));
	}

を追加。
separatorだけ出てくる。

(prefix) » » カテゴリー3 » 件名

is_singleをはずした場合、category.phpでは親カテゴリーも出てくる。

$catの部分に実際のカテゴリーidを入れたところ、そのカテゴリ名を含め、すべての親カテゴリーが表示。

(prefix) カテゴリー1 » カテゴリー2 » カテゴリー3 » » カテゴリー3 » 件名

	$cat_now = get_the_category();
	$cat_now = $cat_now[0];

で、現在の記事のカテゴリー情報を取得し、

	$parent_id = $cat_now->category_parent;

で親カテゴリーの情報を取得。

	echo (get_category_parents($parent_id, true, " » "));

で表示された。

が、get_category_parentsでは、separatorが後ろにつくのに対し、
Breadcrumb Navigation XTでは、separatorが前につくので、
prefixとのつなぎ目にはseparatorが出ず、
Breadcrumb Navigation XTのつなぎ目に、separetorが2つ出てしまう。

(prefix)カテゴリー1 » カテゴリー2 » » カテゴリー3 » 件名


single.phpでは、Breadcrumb Navigation XTを使わないことにする。

	<?php
		if (class_exists('breadcrumb_navigation_xt')) {
			//Display a prefix
			//(prefixの記述)
			if(is_single()) {
				$cat_now = get_the_category();
				$cat_now = $cat_now[0];
				echo("&raquo; ".get_category_parents($cat_now, true, " &raquo; "));
				single_post_title();
			} else {
			//new bredcrumb object
				...
			}
		}
	?>

参考にさせていただいたサイト:
ISプランニング | 個別記事のテンプレート完成