The League has no breadcrumb support of its own, so you generate the trail with a plugin and output it yourself with one call to yoast_breadcrumb(). There is no settings screen for this in the theme and there is not going to be one — the whole job is three lines of PHP in the right file, plus one toggle in Yoast.
The examples use Yoast SEO because its breadcrumb function is the one most sites already have. Rank Math and standalone breadcrumb plugins expose an equivalent function, so only the function name changes.
Step 1: switch the feature on in Yoast
Yoast’s breadcrumbs are disabled by default, and nothing below outputs anything until you turn them on. In current releases the setting is under Yoast SEO → Settings → Advanced → Breadcrumbs; older versions placed it under SEO → Search Appearance → Breadcrumbs. Enable it and save.

Step 2: output the trail
Use a child theme, not Appearance → Theme Editor
header.php means your change is wiped by the next theme update, and a missing semicolon typed into the Theme Editor takes the site down with no undo. Copy header.php into a child theme and edit it there. If you have already locked yourself out this way, disabling a plugin without dashboard access covers recovering over FTP.In your child theme’s header.php, place this where the trail should appear — typically just after the header markup and before the content wrapper opens:
<?php
if ( function_exists( 'yoast_breadcrumb' ) ) {
yoast_breadcrumb( '<p id="breadcrumbs">', '</p>' );
}
The function_exists() guard is not optional. Without it, deactivating Yoast for ten minutes of conflict testing produces a fatal error on every page of the site, which is a memorable way to learn this lesson.
Hide breadcrumbs on the front page
A trail that reads “Home” and nothing else is noise. Add the conditional:
<?php
if ( function_exists( 'yoast_breadcrumb' ) && ! is_front_page() ) {
yoast_breadcrumb( '<p id="breadcrumbs">', '</p>' );
}
Use is_front_page() rather than is_home() unless you specifically mean the blog posts index. On a site with a static front page the two are different pages, and mixing them up is the usual reason a conditional like this appears to do nothing.
Wrap it in your own class for styling
Both arguments to yoast_breadcrumb() are raw markup, so anything you need for layout goes there rather than into a stylesheet override fighting the theme:
<?php
if ( function_exists( 'yoast_breadcrumb' ) && ! is_front_page() ) {
yoast_breadcrumb(
'<div class="site-breadcrumbs"><p id="breadcrumbs">',
'</p></div>'
);
}
Then style .site-breadcrumbs in your child theme. Keep the #breadcrumbs id on the inner element — some plugins and custom CSS in the wild target it, and dropping it costs you nothing to keep.
Video walkthrough
If nothing shows up
That last one is worth sitting with, because breadcrumbs do not create site structure — they reveal it. A clean trail needs one obvious category per post and tags used as a short controlled vocabulary rather than a keyword dump. If switching breadcrumbs on has just shown you how tangled your terms are, WordPress tag archives: noindex, delete, or keep? covers auditing what you have and deciding what to cut. The GeneratePress version of this tutorial uses a theme hook instead of a template edit if you are working on that theme, and how to choose a WordPress theme is relevant if you are weighing a move to a block theme, where this is handled in the Site Editor rather than in PHP.

Leave a Reply to This Post