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 Schema.org 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

Breadcrumb NavXT Attributes 1.0.4

Announcing the immediate availability of Breadcrumb NavXT Attributes 1.0.4. This version features two bug fixes. The remove current item functionality within the shortcode works again in modern versions of Breadcrumb NavXT. Additionally, the post type root page is no longer erroneously included in the first breadcrumb trail generated by Breadcrumb NavXT Attributes.

Users with valid and activated license keys should receive an update notification within the WordPress dashboard and be able to use the update mechanism to update (just like with any plugin in the WordPress.org repository).

-John Havlik

Breadcrumb NavXT Menu Magic 2.1.0

Announcing the immediate availability of Breadcrumb NavXT Menu Magic 2.1.0. New in this version is %DynamicTerm% menu item functionality. Additionally, improvements in Breadcrumb NavXT 6.4 support were made in this version.

The %DynamicTerm% Custom Menu Item

This new feature allows Breadcrumb NavXT Menu Magic to include the breadcrumbs for the term hiearchy normally associated with a post within the breadcrumb trail. Using this functionality requires adding a custom menu item to your menu. This menu item needs to have the Navigation Label set to %DynamicTerm%, and the URL should be set to #. Any posts (of any post type except the built-in page post type) placed under this custom menu item will now have the term hierarchy replace the custom menu item in their breadcrumb trails. Note that if the hierarchy for the post type in question is not a taxonomy (e.g. post parent, or date), the %DynamicTerm% menu item will be ignored.

Old Version Availability

Starting today, only the current release (e.g. 2.1.0) and the latest bug-fix of the prior release (2.0.1) will be available on the download list. All other releases are available upon request via opening a support ticket.

Users with valid and activated license keys should receive an update notification within the WordPress dashboard and be able to use the update mechanism to update (just like with any plugin in the WordPress.org repository).

-John Havlik

Breadcrumb NavXT 6.4.0

Holy incremental improvements Batman! This second feature release of 2019 changes the way private posts and non-hierarchical taxonomies are handled. As part of these changes, a new filter was added bcn_show_post_private. Additionally, the %link% template tag is now allowed in the “unlinked” breadcrumb templates. Lastly, how the Media post type settings are handles changed. Previously, it was referred to as “Attachments” within the Breadcrumb NavXT settings page. Now, this post type is referred to by its actual name (Media) and additional settings are available for it in the settings page.

bcn_show_post_private Filter

Beginning in 6.4.0, the default behavior for private posts has changed. If a parent of a post has the published status of private, it no longer will be included in the breadcrumb trail (Breadcrumb NavXT will skip over it). While this was deemed the most appropriate behavior, some users may want the old behavior. To facilitate that, the bcn_show_post_private filter was added in 6.4.0.

bcn_show_type_term_archive Filter

Since 3.9.0, Breadcrumb NavXT has attempted to associate a taxonomy with a post type to include the type archive in the breadcrumb trail. This was not controllable (if the post type had an archive and it was enabled in the settings for that post type, it would show up in the breadcrumb trails for associated taxonomy terms). To allow users to control this behavior, the bcn_show_type_term_archive filter was added in 6.4.0.

Non-Hierarchical Taxonomies

Previously, the use of non-hierarchical taxonomies as the parent for posts was handled in a very different manner than hierarchical taxonomies. This is quite hacky, and incompatible with the newer bcn_display_json_ld() function. To resolve some of these incompatibilities, when a post has onl only a single non-hierarchical term, the hierarchical term codepath will be used. This will result in the same breadcrumb trial being produced, however, it will no longer cause issues with bcn_display_json_ld.

-John Havlik

Breadcrumb NavXT Polylang Extensions 1.5.4

Announcing the immediate availability of Breadcrumb NavXT Polylang Extensions 1.5.4. This version fixes an issue where the breadcrumb title for Custom Post Type archives would not accept a translation. Note, that this requires the Custom Post Type is registered properly so that Polylang finds its labels and makes them available for translation.

Users with valid and activated license keys should receive an update notification within the WordPress dashboard and be able to use the update mechanism to update (just like with any plugin in the WordPress.org repository).

-John Havlik