Breadcrumb NavXT


Breadcrumb NavXT, the successor to the popular WordPress plugin Breadcrumb Navigation XT, was written from the ground up to be better than its ancestor. This plugin generates locational breadcrumb trails for your WordPress powered blog or website. These breadcrumb trails are highly customizable to suit the needs of just about any website running WordPress. The Administrative interface makes setting options easy, while a direct class access is available for theme developers and more adventurous users.

PHP Requirements

Breadcrumb NavXT 5.2 and newer require PHP5.3
Breadcrumb NavXT 5.1.1 and older require PHP5.2

Features (non-exhaustive)

  • RDFa format BreadcrumbList compatible breadcrumb generation.
  • Extensive breadcrumb customization control via a settings page with appropriate default values for most use cases.
  • Network admin settings page for managing breadcrumb settings for all subsites with configurable global priority.
  • Built in WordPress Widget.
  • Extensible via OOP and provided actions and filters.
  • WPML compatible (enhanced compatibility with WPML extensions plugin).
  • Polylang compatible (enhanced compatibility with Polylang extensions plugin).
  • bbPress compatible (enhanced compatibility with bbPress extensions plugin).
  • BuddyPress compatible (enhanced compatibility with BuddyPress extensions plugin).


Breadcrumb NavXT now supports language packs. Want to translate Breadcrumb NavXT? Visit Breadcrumb NavXT’s translation project.


  • This screenshot shows 5 different examples of breadcrumbs generated by Breadcrumb NavXT
  • A screenshot of the General tab of the settings page
  • A screenshot of the Post Types tab of the settings page
  • A screenshot of the Taxonomies tab of the settings page
  • A screenshot of the Miscellaneous tab of the settings page
  • A screenshot of the Settings Import/Export/Reset form under the Help menu


Breadcrumb NavXT can be installed from within WordPress’ administration panel. After installing and activating the plugin, to get breadcrumb trails to display either use the included widget, or call the breadcrumb trail in your theme (or child theme). See the Calling the Breadcrumb Trail article for more information on calling the breadcrumb trail.

To customize the breadcrumb trail you may edit the default values for the options in the administrative interface. This is located in your administration panel under Settings > Breadcrumb NavXT.

Please visit Breadcrumb NavXT’s Documentation page for more information.


A clean and solid plugin

I’ve been experimenting with using the NavXT widget in a multilingual context, where language is set by a custom taxonomy. The widget works well for this when used together with AH Display Widgets.

The filters are great, but some examples would take the pain out of using them.

My only complaint (a minor thing) is that when the widget has nothing to show it still outputs the widget’s wrapper div – so if you have padding or margins on that container it creates unused extra space on the page and will show the wrapper’s background color (if any).

It would also be nice if showing a result of “404” could be disabled in the settings.

I’m tired.

After using this plugin for approx three years I decided opt it off. I’m really tired to be afraid after every update of this plugin.
The last update brought PHP warnings after a setting migration and I was not able to repair it.
And the question is that it is only the breadcrumbs. Nothing else. It MUST work. Without any questions, migration settings and re-setup. I don’t want to spend several hours to repair !!!BREADCRUMBS!!! after updates.
It’s the last stuff I want to spend my time for.
Now I’ve removed this plugin and I am happy.
Good luck!

Really great plugin — thorough and with excellent support

As soon as you install this plugin, you’ll see breadcrumbs throughout your website that replace the ones generated by WordPress. I didn’t need to do anything for this plugin to work.

A couple of issues came up that were resolved quickly and ended up having nothing to do with the plugin itself. Rather it was a combination of a small learning curve and a few other details that involve operator error.

I’m loving being able to add paged breadcrumbs for my archive of blog posts. I think it looks great and helps visitors know how deep they are into the archives when they’re browsing. John makes this easy to accomplish.

Thank you!!

Read all 113 reviews

Contributors & Developers

“Breadcrumb NavXT” is open source software. The following people have contributed to this plugin.


“Breadcrumb NavXT” has been translated into 21 locales. Thank you to the translators for their contributions.

Translate “Breadcrumb NavXT” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.



Release date: September, 24th 2018

  • Behaviour change: Cleaned up translations for default templates, simplifying and clarifying the translatable content.
  • Behaviour change: Default unlinked breadcrumb templates no longer contain BreadcrumbList markup.
  • Behaviour change: Breadcrumb NavXT REST API endpoints are no longer enabled by default.
  • New feature: Added bcn_register_rest_endpoint filter.
  • New feature: Added bcn_breadcrumb_assemble_json_ld_array filter.
  • New feature: Added support for following the post parent hierarchy first then falling back to a secondary hierarchy.
  • Bug fix: Fixed issue where on loading the settings page immediately after migrating settings causes PHP warnings on CPT and custom taxonomy settings.
  • Bug fix: Fixed issue that caused the settings reset option under the help drop down to not work.


Release date: June, 1st 2018

  • Behaviour change: Links to generate support requests migrated to the forums.
  • New feature: Added support for BreadcrumbList (microdata format) in the included widget.
  • New feature: Added new Root Page support for author archives.
  • New feature: Added REST API endpoint for posts, terms, and author archives.
  • Bug fix: Corrected label for the BreadcrumbList (RDFa format) option in the included widget.
  • Bug fix: Fixed issue where a PHP warning would be thrown due to get_term() returning something other than an instance of WP_Term.


Release date: January, 26th 2018

  • Behaviour change: Added auto migration of post type hierarchy settings to bcn_display*() functions.
  • Bug fix: Fixed issue where a PHP notice would be generated on the page for posts when the blog breadcrumb display option is set to false.
  • Bug fix: Fixed issue where a PHP notice would be generated on archive pages where attachments were included in the wp_query results.


Release date: January, 1st 2018

  • Bug fix: Fixed issue where an improper breadcrumb would be generated in the trail for pages under some circumstances.
  • Bug fix: Fixed issue where the post and page roots were not updating to track user changes in Settings > Reading.


Release date: December, 30th 2017

  • Behaviour change: Added warning alerting that bcn_breadcrumb::type must be an array.
  • Bug fix: Changed Breadcrumb Separator and Paged Template from an input field to a textbox to reduce confusion caused by HTML entities.
  • Bug fix: Fixed issue where the parents of a page may not show up in the breadcrumb trail.
  • Bug fix: Fixed issue where the $reverse parameter for bcn_display and bcn_display_list did not work properly.
  • Bug fix: Fixed issue where the bcn_display_list function did not include the li elements.


Release date: December, 28th 2017

  • Behaviour change: Removed unused Blog Template and Blog Template (Unlinked) from settings page.
  • Bug fix: Fixed issue where changes to the hierarchy type for any post type would not save.
  • Bug fix: Fixed issue where the blog display setting was ignored.


Release date: December, 26th 2017

  • Behaviour change: bcn_breadcrumb_trail::display_list() deprecated in favour of using the $template parameter in bcn_breadcrumb_trail::display().
  • Behaviour change: bcn_breadcrumb_trail::do_attachment() deprecated in favour of calling bcn_breadcrumb_trail::do_post().
  • Behaviour change: bcn_breadcrumb_trail::do_front_page() deprecated in favour of calling bcn_breadcrumb_trail::do_home().
  • Behaviour change: bcn_li_attributes filter was deprecated in favor of bcn_display_attributes.
  • Behaviour change: bcn_breadcrumb_trail::do_archive_by_date() deprecated in favour of calling bcn_breadcrumb_trail::do_day(),bcn_breadcrumb_trail::do_month(), and/orbcn_breadcrumb_trail::do_year()`.
  • Behaviour change: bcn_breadcrumb_trail::find_type() deprecated and removed from bcn_breadcrumb_trail.
  • Behaviour change: Breadcrumb for 404 error pages changed to be a child of the front page.
  • New feature: Added support for various HTML tags in the widget’s pretext field.
  • New feature: Added bcn_default_hierarchy_display filter.
  • New feature: Added bcn_default_hierarchy_type filter.
  • New feature: Added $posttype_name as the third parameter to bcn_show_tax_private.
  • Bug fix: Fixed UI/UX issue in the settings screen where enabling/disabling settings groups for the Home, Blog, and Mainsite breadcrumb settings did not work.
  • Bug fix: Fixed UI/UX issue in the settings screen where not including the paged breadcrumb still allowed the paged breadcrumb template to be edited.
  • Bug fix: Removed use of create_function in registering the widget as it was deprecated in PHP 7.2.


Release date: June 30th, 2017

  • Bug fix: Fixed erroneous use of $linked that caused a PHP warning in bcn_display_json_ld().
  • Bug fix: Fixed issue where removing a breadcrumb from the trail could cause one or more breadcrumb separators to inappropriately disappear.


Release date: April 21st, 2017

  • New feature: Added bcn_display_json_ld() function for producing BreadcrumbList compliant JSON-LD markup.
  • Bug fix: Fixed issue where the uninstaller caused PHP Errors when ran from WP CLI.
  • Bug fix: Fixed issue where bcn_breadcrumb_trail::find_type() caused a PHP Warnings in certain circumstances.
  • Bug fix: Fixed typo in the administrative interface.


Release date: December 23rd, 2016

  • New feature: Added fourth parameter, $force, to bcn_display(), and bcn_display_list() allowing the internal caching mechanism to be bypassed.
  • New feature: Moved to multiple line text boxes rather than regular single line text inputs for the breadcrumb templates in the settings page to enhance visibility.
  • Bug fix: Fixed issue where general searches had the blog breadcrumb in the breadcrumb trail.
  • Bug fix: Fixed issue where the blog breadcrumb options were erroneously made available when a Posts Page was not set.


Release date: September 30th, 2016

  • Bug fix: Fixed issue where the “blog breadcrumb” setting does not affect the inclusion of the blog breadcrumb in the breadcrumb trail.


Release date: August 13th, 2016

  • Bug fix: Fixed issue in bcn_breadcrumb_trail::find_type() that identified pages as posts, causing the erroneous inclusion of the post root in the breadcrumb trail for pages.


Release date: August 12th, 2016

  • Behaviour change: Internal mechanics to handle post parents as the hierarchy for a post (of any post type) has changed to use ‘BCN_POST_PARENT’ rather than ‘page’ for the taxonomy_type.
  • Behaviour change: Internal mechanics to handle dates as the hierarchy for a post (of any post type) has changed to use ‘BCN_DATE’ rather than ‘date’ for the taxonomy_type.
  • Behaviour change: Taxonomy term hierarchy selection logic in bcn_breadcrumb_trail::pick_post_term() has changed to picking the deepest known child of the first hierarchy found in the list of terms returned by get_the_terms() rather than the first term with a child.
  • New feature: Added support for referer influenced taxonomy selection for a post’s (any post type) breadcrumb trail.
  • New feature: Added translate and lang as valid attributes for tags within breadcrumb templates.
  • New feature: Added srcset and sizes as valid attributes for img tags within breadcrumb templates.
  • New feature: Added itemprop as a valid attribute for the meta tags within breadcrumb templates.
  • Bug fix: Fixed various issues caused by other plugins/themes modifying the $post global.
  • Bug fix: Fixed issue where WPML Extensions would cause a CPT without a set root page to use the Post post type’s root page.


Release date: March 15th, 2016

  • Behaviour change: Migrated to new adminKit version, some functions previously in the admin classes are now handled upstream.
  • New feature: Added bcn_post_terms filter to bcn_breadcrumb_trail::post_terms() to control the terms included in a non-hierarchical term breadcrumb for a post.
  • New feature: Added bcn_add_post_type_arg filter to bcn_breadcrumb_trail::maybe_add_post_type_arg() to control when the post_type argument is added to URLs for archives.
  • New feature: Added bcn_pick_post_term filter to bcn_breadcrumb_trail::post_hierarchy() to allow overriding Breadcrumb NavXT’s default term selection behaviour.
  • Bug fix: Fixed issue with untranslatable title on the settings page.
  • Bug fix: Cleanup of several trivial differences between bcn_admin and bcn_network_admin.
  • Bug fix: Fixed improper display of “Your settings are out of date. Migrate now.” message on fresh installs.
  • Bug fix: Clarified verbiage in regards to the paged breadcrumb.
  • Bug fix: Added translation wrappers for date format strings in bcn_breadcrumb_trail::do_archive_by_date().
  • Bug fix: Fixed issue where bcn_breadcrumb_trail::is_builtin() would cause PHP warnings when the passed in post type was not an actual post type.
  • Bug fix: Fixed issue that would cause a PHP error if WP_Widget is unavailable.


Release date: December 14th, 2015

  • Bug fix: Fixed alignment issue of the main content of the settings page on WordPress 4.4.
  • Bug fix: Fixed error caused by options upgrading not re-establishing new settings.
  • Bug fix: Fixed PHP error caused by bcn_breadcrumb_trail::get_type_string_query_var() returning an array when the post_type query variable is an array.


Release date: November 12th, 2015

  • Behaviour change: Breadcrumb NavXT will no longer default to setting the root page for CPTs.
  • Behaviour change: Breadcrumb NavXT will no longer inject a breadcrumb for a CPT archive page if a root page is set for that CPT.
  • Behaviour change: Breadcrumb NavXT now defaults to BCN_SETTINGS_USE_LOCAL rather than BCN_SETTINGS_USE_NETWORK if all of the BCN_SETTINGS_* globals are not defined.
  • Behaviour change: The included widget now supports RDFA style, BreadcrumbList format rather than the deprecated Google Breadcrumbs format.
  • Behaviour change: Default settings for breadcrumb templates now conform to RDFA style, BreadcrumbList format rather than the deprecated Google Breadcrumbs format.
  • New feature: Added bcn_widget_display_trail action to enhance the included widget’s extensibility.
  • New feature: Added bcn_widget_display_types action to enhance the included widget’s extensibility.
  • New feature: The plugin uninstaller has been re-factored, includes support for uninstalling in PHP5.2.
  • New feature: Unit tests added for all non-deprecated features in bcn_breadcrumb.
  • New feature: Unit tests added for the uninstaller.
  • New feature: Date based hierarchies are now available for CPTs.
  • New feature: Date archives restricted by CPT are now supported.
  • New feature: Taxonomy archives restricted by CPT are now supported.
  • Bug fix: Fixed issue where the multibyte supplicant functions were not always being included due to WordPress shipping with its own subset of theses functions.
  • Bug fix: Fixed issue where on an archive for a post type the archive breadcrumb would appear twice.


Release date: June 1st, 2015

  • Bug fix: Fixed issue where the current item would use a built in default template rather than the breadcrumb template in the settings.
  • Bug fix: Updated currently distributed translations set and list to match the current set of translations that achieve the 90% completeness threshold for inclusion.
  • Bug fix: Fixed issue where a PHP warning would be displayed when BCN_SETTINGS_USE_NETWORK is defined.


Release date: May 25th, 2015

  • Bug fix: Added additional checks for empty URLs and templates within bcn_breadcrumb to prevent various bugs when empty URLs and/or templates are passed in.
  • Bug fix: Move away from building URLs for search breadcrumbs and instead using get_search_link() to fix support for pretty permalinks.
  • Bug fix: Fixed issue where media items (attachments) that have not been attached to a post yet would cause an incorrect breadcrumb trail to be generated.
  • Bug fix: Fixed issue where attachments of the front page would cause PHP Warnings.
  • Bug fix: Fixed issue where attachments of the front page would have duplicate breadcrumbs for the home page.
  • Bug fix: Fixed issue where attachments of pages would have an extraneous breadcrumb relating to the page for posts.
  • Bug fix: Fixed issue with the text domain/domain path in the plugin header.


Release date: January 9th, 2015

  • Deprecated: The Max Breadcrumb Length setting has been deprecated in favor of using CSS styling to perform the length limiting.
  • Behaviour change: The archive page for a post type is now generated for the top ancestor post rather than for the current page when “post parent” is used as the post’s hierarchy.
  • Behaviour change: Now requires PHP5.3 or newer.
  • New feature: Added bcn_type_archive_post_type filter.
  • New feature: Settings depending on another setting to be enabled are disabled when the dependency setting is disabled.
  • New feature: More descriptive messages on settings saving (notify user on success, failure, and no changes to save).
  • Bug fix: Fixed awkward wording in the settings page for post hierarchy settings.
  • Bug fix: Fixed missed default templates for post formats when all taxonomy settings had the tax_ prefix added in 5.1.
  • Bug fix: Fixed bulk of compatibility issues with bbPress.


Release date: July 29th, 2014

  • Bug fix: Fixed issue where attachments and their parents have the same link when ‘link current item’ is enabled.
  • Bug fix: Pass the same parameters into the widget title and (pre) text filters as the default WordPress widgets.
  • Bug fix: Fixed issue where PHP warnings would be thrown on author pages for authors that do not have any posts.
  • Bug fix: Reduced severity of $post global not being of type WP_Post, will silently exit on non-WP_DEBUG enabled sites.


Release date: June 9th, 2014

  • Behaviour change: bcn_breadcrumb_trail::do_post() now expects to be passed in a valid WP_Post object.
  • Behaviour change: breadcrumb_navxt::version changed to a constant to allow uninstantiated access of the plugin version.
  • New feature: Support Google’s RDFa Breadcrumbs microformat by default.
  • New feature: Added bcn_opts_update_prebk filter.
  • Bug fix: Validate HTML5 options on tab traversal.
  • Bug fix: Fixed issue where the settings importer parsed the version string incorrectly.
  • Bug fix: Added ‘typeof’ to list of valid HTML tag attributes.
  • Bug fix: Prefixed all taxonomies with ‘tax_’ to prevent name collisions.
  • Bug fix: Added ID to Post and Taxonomy Term Elements in bcn_breadcrumb_trail::do_root() as is done everywhere else.
  • Bug fix: Fixed issue with bcn_breadcrumb_trail::do_author() returning the incorrect user under some circumstances.
  • Bug fix: Fixed issue where saving twice on a tab in the settings page would cause the next page load to open the general tab rather than the current tab.
  • Bug fix: Added bcn_breadcrumb_template filter back into bcn_breadcrumb::set_template(), was a regression in 5.0 from 4.4.
  • Bug fix: Fixed issue where the included widget did not check against default settings, causing PHP Warnings to show up on the frontend under some circumstances.
  • Bug fix: Fixed issue where we didn’t handle WP_POST::has_archive correctly when it was a string, causing issues with CPTs generated by some plugins.
  • Bug fix: Fixed issue where the default taxonomy selected for a CPT could be a non-public taxonomy.
  • Bug fix: Attachments get their own title within the settings page now.
  • Bug fix: Filter the title and pre text in the widget.


Release date: December 31st, 2013

  • Behaviour Change: Notify multisite users when settings may be overridden by the network settings and vice versa.
  • Bug fix: Updated tab style to match WordPress 3.8 look and feel.
  • Bug fix: Fixed issue where bcn_breadcrumb_trail::display_list() would produce multiple instances of the class attribute.
  • Bug fix: Fixed several issues with the uninstaller.


Release date: November 20th, 2013

  • Behaviour Change: Moved bcn_breadcrumb_trail::trail to bcn_breadcrumb_trail::breadcrumbs
  • Behaviour Change: When WordPress is in multisite/network mode, the settings set in the network settings page take priority over subsite settings.
  • New feature: Added bcn_breadcrumb_trail_object filter.
  • New feature: Added bcn_li_attributes filter.
  • New feature: Added bcn_breadcrumb_types filter.
  • New feature: Added Network Admin Settings page.
  • New feature: Added xmlns:v and property to the valid tag attributes.
  • Bug fix: The current_item breadcrumb for search results should result in a valid HTTPS link when appropriate.