WooCommerce generates shop, category, tag, single product breadcrumbs out of the box. Such breadcrumbs should follow your WooCommerce permalink settings. For example, I use the “Shop base with category” option under WordPress > Permalinks. In my case, by default, a product belonging to category “Uncategorized” has an URL = “https://example.com/shop/uncategorized/product-name/” and its single product page breadcrumbs follow that same rule: “Home / Shop / Uncategorized / Product Name”.
Now, what if I want to rename one of the items? What if I want to replace one of the breadcrumb items with something else? Well, WooCommerce gives us a cool filter called “woocommerce_get_breadcrumb” that we can use to edit the breadcrumb content before displaying it. In this post, we will see how to add a suffix to product categories and also how to replace the product name with the SKU value. Enjoy!
PHP Snippet 1: Add Prefix to Category Breadcrumb Items
/**
* @snippet Add Prefix to Category @ WooCommerce Breadcrumb
* @how-to Get tutoraspire.com FREE
* @author Tutor Aspire
* @testedwith WooCommerce 3.9
* @donate $9 https://tutoraspire.com
*/
add_filter( 'woocommerce_get_breadcrumb', 'tutoraspire_single_product_edit_cat_breadcrumbs', 9999, 2 );
function tutoraspire_single_product_edit_cat_breadcrumbs( $crumbs, $breadcrumb ) {
if ( is_product() ) {
$index = count( $crumbs ) - 2; // cat is always second last item
$value = $crumbs[$index];
$crumbs[$index][0] = 'Category: ' . $crumbs[$index][0];
}
return $crumbs;
}
PHP Snippet 2: Replace Product Name Breadcrumb Item With SKU
/**
* @snippet Swap Product with SKU @ WooCommerce Breadcrumb
* @how-to Get tutoraspire.com FREE
* @author Tutor Aspire
* @testedwith WooCommerce 3.9
* @donate $9 https://tutoraspire.com
*/
add_filter( 'woocommerce_get_breadcrumb', 'tutoraspire_single_product_edit_prod_name_breadcrumbs', 9999, 2 );
function tutoraspire_single_product_edit_prod_name_breadcrumbs( $crumbs, $breadcrumb ) {
if ( is_product() ) {
global $product;
$index = count( $crumbs ) - 1; // product name is always last item
$value = $crumbs[$index];
$crumbs[$index][0] = $product->get_sku();
}
return $crumbs;
}