Join millions who empower their websites with ElementsKit Elementor Addons. Get templates, & 100+ widgets...
A simple breadcrumb trail block that supports JSON-LD structured data and is compatible with Woocommerce
Breadcrumb Block is a WordPress plugin designed to create a breadcrumb navigation trail for your site. It is lightweight, SEO-friendly, and compatible with WooCommerce. The plugin allows for customisation of the breadcrumb items and their appearance, making it suitable for various types of websites.
You can use it in the Page Editor, Site Editor, or template files. The plugin includes features for changing separators and modifying breadcrumb items, making it versatile for users who want to enhance their site's navigation.
Best for: This plugin is best for WordPress site owners looking to improve navigation with breadcrumb trails.
What it does well
Where it falls short
Breadcrumb Block offers a straightforward solution for adding breadcrumb navigation, though it may require some technical knowledge for customisation.
Phi Phan's own description of Breadcrumb Block, lightly tidied.
This is a single-block plugin for the breadcrumb trail. It’s simple, lightweight, SEO-friendly, and WooCommerce compatibility. It also includes some simple separator icons. It works everywhere: Page Editor, Site Editor, and template files.
How to change/remove an item?
add_filter( 'breadcrumb_block_get_item', function ( $item_args, $context, $breadcrumbs_instance ) {
// Ignore items without context.
if ( ! $context || ! ( $context['object'] ?? false ) ) {
return $item_args;
}
// Eg: remove a term.
if ( 'term' === ( $context['type'] ?? '' ) && 'term-slug' === $context['object']->slug ) {
return false;
}
// Eg: Change the title of a page.
if ( 'page' === ( $context['type'] ?? '' ) && page_id_to_change === $context['object']->ID ) {
$item_args[0] = 'Make it shorter';
}
return $item_args;
}, 10, 3 );
$item_args is a 3-item array: [$item_label, $item_link, $item_attrs]
$context is an associative array: ['type' => 'item type', 'object' => 'item object']. type can be one of the following values: front_page, home, shop, page, post, single, term, taxonomy, post_type_archive, search, 404, paged, author, date_year, date_month, date_day, attachment.
How to change the markup of the block?
add_filter( 'breadcrumb_block_get_breadcrumb_trail', function ( $markup, $args, $breadcrumbs_instance ) {
return $markup;
}, 10, 3 );
How to add or remove the items from the breadcrumb trail?
add_filter( 'breadcrumb_block_get_items', function ( $items, $breadcrumbs_instance ) {
return $items;
}, 10, 2 );
How to use a custom separator for the breadcrumb trail?
add_filter( 'breadcrumb_block_get_args', function ( $args ) {
// For example, change separator.
$args['separator'] = '<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="1em" height="1em" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M3.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L9.293 8 3.646 2.354a.5.5 0 0 1 0-.708z"/><path fill-rule="evenodd" d="M7.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L13.293 8 7.646 2.354a.5.5 0 0 1 0-.708z"/></svg>';
return $args;
} );
The custom separator should be an inline SVG. To make sure it displays properly, it should have three attributes: width, height, and fill. The values of these attributes should be as follows: fill="currentColor" width="1em" height="1em".
Using this hook, you can customize other attributes such as container, before, after, list_tag, item_tag, item_before, item_after, separator.
How to prepend the blog page to all single posts?
add_action( 'breadcrumb_block_single_prepend', function ( $post, $breadcrumbs_instance ) {
if ( 'post' === $post->post_type ) {
$blog_id = get_option( 'page_for_posts');
if ( $blog_id ) {
$breadcrumbs_instance->add_item( get_the_title( $blog_id ), get_permalink( $blog_id ) );
}
}
}, 10, 2 );
If this plugin is useful for you, please do a quick review and rate it on WordPress.org to help us spread the word. I would very much appreciate it.
Please check out my other plugins if you’re interested:
The plugin is developed using @wordpress/create-block.
Other plugins for site navigation.
Join millions who empower their websites with ElementsKit Elementor Addons. Get templates, & 100+ widgets...
Elementor Carousel, Mega Menu, Posts List/Slider, WooCommerce Widgets, Display Conditions, AI Abilities, Prema...
Elementor templates, Header footer builder, Elementor Post Grid, Woocommerce Grid builder, Slider, Forms, Gall...
Adds breadcrumb navigation showing the visitor's path to their current location.
Add icons to WordPress navigation menus easily — pick from Font Awesome, Dashicons, image icons & more. St...
Create a welcome notification bar for your website. Also, My Sticky Bar plugin can make your menu or header st...