Custom Breadcrumbs in Genesis Theme

January 3, 2017

Gokul Deepak S

Sometimes we have to customise the breadcrumbs for easy navigation and easy understandings. Here I have given the Breadcrums which I have used. Using this I have layered the Breadcrumbs like a Post under Page. I have used P2P plugin which connects Page to Post. You can simply edit that part and replace your own layer too.

Step 1: Copy and paste the below php code in your own blog custom plugin. If you haven’t created a custom plugin please make one fast.

If you are not interested to create a custom plugin simply paste this code in functions.php

 

//Custom Breadcrumbs
function the_breadcrumbs() {
 
        global $post;
 
        if (!is_home()) {
 
            echo "<a href='";
            echo get_option('home');
            echo "'>";
            echo "Lyrics";
            echo "</a>";
 
            if (is_category() || is_single()) {
 
                echo "  »  ";
                $cats = get_the_category( $post->ID );
 
                foreach ( $cats as $cat ){
                    echo $cat->cat_name;
                    echo "  »  ";
                }
               
                
                if (is_single()) {
                echo do_shortcode(' [p2p_connected type=posts_to_pages mode=inline]');
                echo "  »  ";
                    the_title();
                }
            } elseif (is_page()) {
 
                if($post->post_parent){
                    $anc = get_post_ancestors( $post->ID );
                    $anc_link = get_page_link( $post->post_parent );
 
                    foreach ( $anc as $ancestor ) {
                        $output = "  »  <a href=".$anc_link.">".get_the_title($ancestor)."</a>  »  ";
                    }
 
                    echo $output;
                    the_title();
 
                } else {
                    echo '  »  ';
                    echo the_title();
                }
            }
        }
    elseif (is_tag()) {single_tag_title();}
    elseif (is_day()) {echo"Archive: "; the_time('F jS, Y'); echo'</li>';}
    elseif (is_month()) {echo"Archive: "; the_time('F, Y'); echo'</li>';}
    elseif (is_year()) {echo"Archive: "; the_time('Y'); echo'</li>';}
    elseif (is_author()) {echo"Author's archive: "; echo'</li>';}
    elseif (isset($_GET['paged']) && !empty($_GET['paged'])) {echo "Blogarchive: "; echo'';}
    elseif (is_search()) {echo"Search results: "; }
}
//End of Custom Breadcrumbs

 Step 2:

Now the function is ready and you simply have to call the function in where the breadcrums have to be displayed. In my case I have used Genesis Sample theme and so I have used Simple Genesis Hooks.

Paste the following code in genesis_before_entry hook.

<?php if(function_exists('the_breadcrumbs')) the_breadcrumbs(); ?>

Mission Completed.

About the author

Gokul Deepak is a DevOps engineer focused on building reliable cloud systems through automation, observability, and disciplined infrastructure design. He shares practical insights from real-world production environments, helping engineers build systems that scale with clarity and confidence.

Leave a Reply

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments