Breadcrumb NavXT 6.2.0

Holy pre-Gutenberg Block introduction release Batman! Originally, 6.2 was to contain a Gutenberg Block, however it did not make the release. New in 6.2 are two filters (bcn_register_rest_endpoint and bcn_breadcrumb_assemble_json_ld_array), and support for following a primary (post parent hierarchy) and then secondary hierarchy (specified in the Hierarchy option for the post type).

A few bug fixes were included in this release. A bug preventing the settings reset option under the help drop down from working was fixed. A cause of PHP warnings to show up on the custom post type and custom taxonomy settings immediately after upgrading/migrating the settings to a new version was fixed.

Several behavior changes were made in this release. The biggest involves the REST API endpoints no longer being enabled by default. Additionally, the default templates were changed for two reasons. The first was to simplify and clarify the translatable content. The second was to improve BreadcrumbList compatibility. As part of these changes, the default unlinked breadcrumb templates no longer contain span elements, or any BreadcrumbList markup. This fixes an issue seen in the Google Structured Data Testing Tool.

REST API Changes

As introduced in 6.1, the REST API was enabled by default. In 6.2, this changes. Now, individual Breadcrumb NavXT REST API endpoints must be requested via the newly introduced bcn_register_rest_endpoint filter. This provides a method for plugins using the Breadcrumb NavXT REST API to request and expose only the endpoints that are needed. Note that the BCN_DISABLE_REST_API constant can still disable the Breadcrumb NavXT REST API and takes priority over the new filter.

These changes were made in an effort to decrease the attack surface of Breadcrumb NavXT and were prompted by concerns raised by Janek Vind. Previously, the author endpoint could be used to find usernames based on user ID if the display name was kept as the username. While WordPress itself will make this information available, some users employ methods to prevent WordPress from making this information public. Hence, changes were made to the default behavior in Breadcrumb NavXT

Primary/Secondary Hierarchy

This newly introduced option for post types (except pages), allows for hierarchies that start with the post parent and once that hierarchy has been exhausted follows the post hierarchy option. This allows attachment like behavior for custom post types.

As always, you can grab the latest version of Breadcrumb NavXT from the Breadcrumb NavXT page. If you experience any issues with this version of Breadcrumb NavXT, please leave a comment on this post detailing the issue.

-John Havlik

[end of transmission, stay tuned]

Enabling the Breadcrumb NavXT REST API

Beginning in Breadcrumb NavXT 6.2, the REST API endpoints provided by Breadcrumb NavXT are no longer automatically enabled. Instead, the specific endpoints must be requested using the bcn_register_rest_endpoint filter. Currently, there are three available endpoints: post, taxonomy, and author.

Below is an example of how to enable the Breadcrumb NavXT post endpoint. It is recommended to run this in the WordPress rest_api_init action at a priority of 9 or higher. This is to ensure the filter is registered before Breadcrumb NavXT attempts to run it.

add_filter('bcn_register_rest_endpoint', 'my_bcn_endpoint_filter', 10, 4);
function my_bcn_endpoint_filter($register_rest_endpoint, $endpoint, $version, $methods)
	if($endpoint === 'post')
		$register_rest_endpoint = true;
	return $register_rest_endpoint;

Enabling multiple endpoints is as simple as ORing checks of the value of $endpoint in the if statement. One important behavior to note: if BCN_DISABLE_REST_API is set to true, the Breadcrumb NavXT REST API will not be available. That is, an endpoint will be enabled if it is requested via the bcn_register_rest_endpoint filter and BCN_DISABLE_REST_API is set to false or is not set.

-John Havlik

[end of transmission, stay tuned]