How to add a page to the Yoast breadcrumbs

I am using Yoasts WordPress SEO and I have set up my breadcrumbs. The problem is that my page setup is s follows.

/
/about
/blog - On this page I query the posts and display them. The posts themselves have nothing before them in the URL.

The breadcrumb shows as follows.

Read More
Home / Category / Page Title

I want it to show like this.

Home/ Blog / Category / Page Title

Is this possible?

Related posts

1 comment

  1. Here’s the general principle of what you need to do:

    1. Hook into the wpseo_breadcrumb_links or wp_seo_get_bc_ancestors API filters.
    2. Add your Blog into the WordPress SEO Breadcrumb $links array, using array_splice.

    Place this in your theme’s functions.php:

    /**
     * Conditionally Override Yoast SEO Breadcrumb Trail
     * http://plugins.svn.wordpress.org/wordpress-seo/trunk/frontend/class-breadcrumbs.php
     * -----------------------------------------------------------------------------------
     */
    
    add_filter( 'wpseo_breadcrumb_links', 'wpse_100012_override_yoast_breadcrumb_trail' );
    
    function wpse_100012_override_yoast_breadcrumb_trail( $links ) {
        global $post;
    
        if ( is_home() || is_singular( 'post' ) || is_archive() ) {
            $breadcrumb[] = array(
                'url' => get_permalink( get_option( 'page_for_posts' ) ),
                'text' => 'Blog',
            );
    
            array_splice( $links, 1, -2, $breadcrumb );
        }
    
        return $links;
    }
    

    Note: You may need to update the code specific to your site or needs, but the general idea stays the same.

Comments are closed.