WordPress custom breadcrumbs without plugin

WordPress custom breadcrumbs without plugin

Breadcrumbs are the important part of our website, in wordpress there are several plugins are available for this, but below I posted the code for custom breadcrumbs for our wordpress site. Just add this below code in to your current wordpress theme functions.php and call the second step.

Step 1

<?php 
//breadcrumb
if( !function_exists('increativeweb_breadcrumb')){
 function increativeweb_breadcrumb(){
 
 $showOnHome = 0; // 1 - show "breadcrumbs" on home page, 0 - hide
 $delimiter = '<li class="raquo">|</li>'; // divider
 $home = 'Home'; // text for link "Home"
 $showCurrent = 1; // 1 - show title current post/page, 0 - hide
 $before = '<li class="active">'; // open tag for active breadcrumb
 $after = '</li>'; // close tag for active breadcrumb
 
 global $post;
 $homeLink = home_url();
 
 if (is_front_page()) {
 
 if ($showOnHome == 1) echo '<ul class="icw-breadcrumb"><li><a href="' . $homeLink . '">' . $home . '</a><li></ul>';
 
 } else {
 
 echo '<ul class="icw-breadcrumb"><li><a href="' . $homeLink . '">' . $home . '</a></li> ' . $delimiter . ' ';
 
 if ( is_home() ) {
 echo $before . 'Blog' . $after;
 } elseif ( is_category() ) {
 $thisCat = get_category(get_query_var('cat'), false);
 if ($thisCat->parent != 0) echo get_category_parents($thisCat->parent, TRUE, ' ' . $delimiter . ' ');
 echo $before . 'Category Archives: "' . single_cat_title('', false) . '"' . $after;
 
 } elseif ( is_search() ) {
 echo $before . 'Search for: "' . get_search_query() . '"' . $after;
 
 } elseif ( is_day() ) {
 echo '<li><a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a></li> ' . $delimiter . ' ';
 echo '<li><a href="' . get_month_link(get_the_time('Y'),get_the_time('m')) . '">' . get_the_time('F') . '</a></li> ' . $delimiter . ' ';
 echo $before . get_the_time('d') . $after;
 
 } elseif ( is_month() ) {
 echo '<li><a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a></li> ' . $delimiter . ' ';
 echo $before . get_the_time('F') . $after;
 
 } elseif ( is_year() ) {
 echo $before . get_the_time('Y') . $after;
 
 } elseif ( is_single() && !is_attachment() ) {
 if ( get_post_type() != 'post' ) {
 $post_name = get_post_type();
 $post_type = get_post_type_object(get_post_type());
 $slug = $post_type->rewrite['slug'];
 //var_dump($slug);
 //var_dump($post_type);
 echo '<li><a href="' . $homeLink . '/' . $slug . '/">' . $post_type->labels->singular_name . '</a></li>';
 if ($showCurrent == 1) echo ' ' . $delimiter . ' ' . $before . get_the_title() . $after;
 } else {
 $cat = get_the_category(); $cat = $cat[0];
 $cats = get_category_parents($cat, TRUE, ' ' . $delimiter . ' ');
 if ($showCurrent == 0) $cats = preg_replace("#^(.+)\s$delimiter\s$#", "$1", $cats);
 echo $cats;
 if ($showCurrent == 1) echo $before . get_the_title() . $after;
 }
 
 } elseif ( !is_single() && !is_page() && get_post_type() != 'post' && !is_404() ) {
 $post_type = get_post_type_object(get_post_type());
 echo $before . $post_type->labels->singular_name . $after;
 
 } elseif ( is_attachment() ) {
 $parent = get_post($post->post_parent);
 $cat = get_the_category($parent->ID); $cat = $cat[0];
 echo get_category_parents($cat, TRUE, ' ' . $delimiter . ' ');
 echo '<li><a href="' . get_permalink($parent) . '">' . $parent->post_title . '</a></li>';
 if ($showCurrent == 1) echo ' ' . $delimiter . ' ' . $before . get_the_title() . $after;
 
 } elseif ( is_page() && !$post->post_parent ) {
 if ($showCurrent == 1) echo $before . get_the_title() . $after;
 
 } elseif ( is_page() && $post->post_parent ) {
 $parent_id = $post->post_parent;
 $breadcrumbs = array();
 while ($parent_id) {
 $page = get_page($parent_id);
 $breadcrumbs[] = '<li><a href="' . get_permalink($page->ID) . '">' . get_the_title($page->ID) . '</a></li>';
 $parent_id = $page->post_parent;
 }
 $breadcrumbs = array_reverse($breadcrumbs);
 for ($i = 0; $i < count($breadcrumbs); $i++) {
 echo $breadcrumbs[$i];
 if ($i != count($breadcrumbs)-1) echo ' ' . $delimiter . ' ';
 }
 if ($showCurrent == 1) echo ' ' . $delimiter . ' ' . $before . get_the_title() . $after;
 
 } elseif ( is_tag() ) {
 echo $before . 'Tag Archives: "' . single_tag_title('', false) . '"' . $after;
 
 } elseif ( is_author() ) {
 global $author;
 $userdata = get_userdata($author);
 
 echo $before . 'by ' . $userdata->display_name . $after;
 
 } elseif ( is_404() ) {
 echo $before . '404' . $after;
 }
 
 if ( get_query_var('paged') ) {
 if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ' (';
 echo __(' Page') . ' ' . get_query_var('paged');
 if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ')';
 }
 
 
 echo '</ul>';
 
 }
 
 }
 }

Step 2

After adding the code into functions.php add the below code to where you want to use this function.

<?php if (function_exists('increativeweb_breadcrumb')) echo increativeweb_breadcrumb(); ?>

Jayesh Patel
Author
Jayesh Patel

Jayesh Patel is a Professional Web Developer & Designer and the Founder of InCreativeWeb.

As a highly Creative Web/Graphic/UI Designer - Front End / PHP / WordPress / Shopify Developer, with 14+ years of experience, he also provide complete solution from SEO to Digital Marketing. The passion he has for his work, his dedication, and ability to make quick, decisive decisions set him apart from the rest.

His first priority is to create a website with Complete SEO + Speed Up + WordPress Security Code of standards.



Explore

Related Articles

23rd November, 2024

How Custom WordPress Websites Drive Business Success?

21st November, 2024

Advantages of Business Web Development

18th November, 2024

How to delete your cache and force a browser refresh?

16th November, 2024

How to Manage Website Technical Debt for Long-Term Success?