WordPress Breadcrumbs

Home/WordPress Breadcrumbs

Creating breadcrumbs in WordPress themes can be a pain.  With that in mind, this handy function should be exactly what you need.

function waz_breadcrumbs()

{

$delimiter = '»';

$name = 'Home'; //text for the 'Home' link

$currentBefore = '<span>';

$currentAfter = '</span>';

if ( !is_home() && !is_front_page() || is_paged() ) {

echo '<div id="crumbs">';

global $post;

$home = get_bloginfo('url');

echo '<a href="' . $home . '">' . $name . '</a> ' . $delimiter . ' ';

if ( is_category() ) {

global $wp_query;

$cat_obj = $wp_query->get_queried_object();

$thisCat = $cat_obj->term_id;

$thisCat = get_category($thisCat);

$parentCat = get_category($thisCat->parent);

if ($thisCat->parent != 0) echo(get_category_parents($parentCat, TRUE, ' ' . $delimiter . ' '));

echo $currentBefore . '';

single_cat_title();

echo '' . $currentAfter;

} elseif ( is_day() ) {

echo '<a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a> ' . $delimiter . ' ';

echo '<a href="' . get_month_link(get_the_time('Y'),get_the_time('m')) . '">' . get_the_time('F') . '</a> ' . $delimiter . ' ';

echo $currentBefore . get_the_time('d') . $currentAfter;

} elseif ( is_month() ) {

echo '<a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a> ' . $delimiter . ' ';

echo $currentBefore . get_the_time('F') . $currentAfter;

} elseif ( is_year() ) {

echo $currentBefore . get_the_time('Y') . $currentAfter;

} elseif ( is_single() ) {

$cat = get_the_category(); $cat = $cat

[0];

echo get_category_parents($cat, TRUE, ' ' . $delimiter . ' ');

echo $currentBefore;

the_title();

echo $currentAfter;

} elseif ( is_page() && !$post->post_parent ) {

echo $currentBefore;

the_title();

echo $currentAfter;

} elseif ( is_page() && $post->post_parent ) {

$parent_id = $post->post_parent;

$breadcrumbs = array();

while ($parent_id) {

$page = get_page($parent_id);

$breadcrumbs[] = '<a href="' . get_permalink($page->ID) . '">' . get_the_title($page->ID) . '</a>';

$parent_id = $page->post_parent;

}

$breadcrumbs = array_reverse($breadcrumbs);

foreach ($breadcrumbs as $crumb) echo $crumb . ' ' . $delimiter . ' ';

echo $currentBefore;

the_title();

echo $currentAfter;

} elseif ( is_search() ) {

echo $currentBefore . 'Search results for &#39;' . get_search_query() . '&#39;' . $currentAfter;

} elseif ( is_tag() ) {

echo $currentBefore . 'Posts tagged &#39;';

single_tag_title();

echo '&#39;' . $currentAfter;

} elseif ( is_author() ) {

global $author;

$userdata = get_userdata($author);

echo $currentBefore . 'Articles posted by ' . $userdata->display_name . $currentAfter;

} elseif ( is_404() ) {

echo $currentBefore . 'Error 404' . $currentAfter;

}

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 '</div>';

}

}

2017-05-19T15:48:09+00:00 March 2nd, 2010|PHP Snippets|0 Comments

About the Author:

Warren Chandler is a freelance web programmer and web developer, based in Frinton on Sea, Essex. Warren specialises in web programming, web design, corporate identity, copy writing, SEO, logo and print media for home, work, and mobile platforms.

Leave A Comment