This filter is applied within the bcn_breadcrumb_trail class in the display_loop() function at the beginning of the function. This filter was introduced in version 7.1. It receives one parameter:

  • $breadcrumbs(array)(required) The array of bcn_breadcrumb objects that comprise the breadcrumb trail.


This filter is applied within the mtekk\adminKit\adminKit class in the opts_update() function just before saving the settings to the option entry. This filter was introduced in version 7.0. It receives one parameter:

  • $settings_diff(array)(required) The array of non-default valued mtekk\adminKit\setting objects which will be saved to the option entry.

Non-Hierarchical Taxonomies and JSON-LD Compatibility

While Breadcrumb NavXT for some time has provided methods for generating JSON-LD formatted BreadcrumbLists, the use of non-hierarchical taxonomies within a breadcrumb trail may result in non-compliant breadcrumb trails. For the case of a post only being a member of a single term within a non-hierarchical taxonomy, since Breadcrumb NavXT 6.4, compliant JSON-LD is generated. However, when a post is a member of multiple non-hierarchical terms within the same taxonomy, we run into problems.

When using the normal display functions, all of the terms in the non-hierarchical taxonomy that the post is a member of will be displayed, separated by commas. This behavior has been more-or-less the same since support for tags was added in 2.1.0. In essence, when there are multiple terms, there is a second dimension to the breadcrumb trail for that specific breadcrumb.

Unfortunately, it does not appear that BreadcrumbList has the facility to support multi-dimensional breadcrumbs. Hence, a single term needs to be selected when there are multiple for a post. Luckily, the bcn_post_terms filter can be used to do this.

The Code

Introduced in Breadcrumb NavXT 5.4, bcn_post_terms allows us to filter out all of the terms returned by post_terms(). In this case, only the first term is wanted.

add_filter('bcn_post_terms','my_bcn_post_term_selector', 10, 3);
function my_bcn_post_term_selector($terms, $taxonomy, $id)
	//Check to ensure the terms list is an array and there is more than one item in it
	if(is_array($terms) and count($terms) > 1)
		//Return the fist item in a new array
		return array(0 => reset($terms));
	return $terms;

To get started quickly, just copy and paste the above code into a site specific plugin and start playing.

Note: This code relies on behavior introduced in Breadcrumb NavXT 6.4 and will not work in prior versions.

-John Havlik


This filter is applied within the bcn_breadcrumb class in the set_linked member function before setting the internal $linked property. This filter was introduced in 6.5. It receives three parameters:

  • $linked(bool)(required) Whether or not the breadcrumb is linked
  • $type(array)(optional) The array of type strings for the breadcrumb
  • $id(int|NULL)(optional) The ID of the resource represented by the breadcrumb, will be NULL if not suitable ID exists

Related Articles


This filter is applied within the breadcrumb_navxt_trail class in the type_archive() function. This filter was introduced in version 6.4. It receives two parameters:

  • $display(boolean)(required) Whether or not to add the post type (filterable via bcn_type_archive_post_type) archive breadcrumb to the breadcrumb trail for term archives
  • $taxonomy(string)(optional) The name of the taxonomy for term archive the breadcrumb trail is being generated for