Breadcrumb NavXT でカスタムタクソノミーのリンクを追加する

Breadcrumb NavXT で表示されるタームを追加して、カスタムタクソノミーのアーカイブページへのリンクを追加します。

たとえば、投稿にカテゴリーとは別に「plugins」というカスタムタクソノミーがあるとします。

pluginsが設定されている投稿ページが表示されたときには、パン屑リストに、pluginsのアーカイブページへのリンクを表示する、というようにしたい場合、次のようにします。

add_action('bcn_after_fill', 'my_filter_breadcrumbs_after');
function my_filter_breadcrumbs_after($bcnObj) {
	if ( count($bcnObj->trail) > 0 ) {
		if (is_single()) {	//投稿なら
			$single_post_id = get_the_id();//投稿IDを取得
			$mycats = get_the_terms( $single_post_id, 'plugins');//属するカスタムタクソノミー(plugins)のタームを取得
			if(is_array($mycats) && count($mycats)>0) {	//タームがあれば
				$mycat = $mycats[0]; //一つ目のタームを取得
				$plugins_name = $mycat->name; //ターム名
				$plugins_slug = $mycat->slug; //タームスラッグ
			}
			
			if ($map_area_name) { //ターム名が設定されていたら
			
				//一番右のパンくずを$trail_add[0]にコピー
				$trail_add[0] = $bcnObj->trail[0];

				//独自ページのパンくず生成
				$bcnObj->trail[0] = clone $bcnObj->trail[0];//クローンで初期化
				
				$bcnObj->trail[0]->set_title($plugins_name);//タイトルを設定
				
				$query = array('plugins' => $plugins_slug);//URLのパラメータを設定
				$seturl = add_query_arg( $query ,  home_url()) ;
				$bcnObj->trail[0]-> set_url($seturl);//カスタムタクソノミーのURLを設定
				
				$bcnObj->trail = array_merge ($trail_add, $bcnObj->trail);//マージ
			}
		}
	}
	return $bcnObj;
}

 

nakaike