Skip to content

Instantly share code, notes, and snippets.

@lusareal
Forked from Dimox/dimox_breadcrumbs.php
Created August 21, 2018 13:14
Show Gist options
  • Select an option

  • Save lusareal/ae52bb6494b2e77fa5f6a4d6fa49cfb7 to your computer and use it in GitHub Desktop.

Select an option

Save lusareal/ae52bb6494b2e77fa5f6a4d6fa49cfb7 to your computer and use it in GitHub Desktop.

Revisions

  1. @Dimox Dimox revised this gist Jan 21, 2017. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions dimox_breadcrumbs.php
    Original file line number Diff line number Diff line change
    @@ -2,7 +2,7 @@
    /*
    * WordPress Breadcrumbs
    * author: Dimox
    * version: 2016.11.17
    * version: 2017.21.01
    * license: MIT
    */
    function dimox_breadcrumbs() {
    @@ -38,7 +38,7 @@ function dimox_breadcrumbs() {
    $link_in_after = '</span>';
    $link = $link_before . '<a href="%1$s"' . $link_attr . '>' . $link_in_before . '%2$s' . $link_in_after . '</a>' . $link_after;
    $frontpage_id = get_option('page_on_front');
    $parent_id = $post->post_parent;
    $parent_id = ($post) ? $post->post_parent : '';
    $sep = ' ' . $sep_before . $sep . $sep_after . ' ';
    $home_link = $link_before . '<a href="' . $home_url . '"' . $link_attr . ' class="home">' . $link_in_before . $text['home'] . $link_in_after . '</a>' . $link_after;

    @@ -96,7 +96,7 @@ function dimox_breadcrumbs() {
    if ( get_post_type() != 'post' ) {
    $post_type = get_post_type_object(get_post_type());
    $slug = $post_type->rewrite;
    printf($link, $home_url . '/' . $slug['slug'] . '/', $post_type->labels->singular_name);
    printf($link, $home_url . $slug['slug'] . '/', $post_type->labels->singular_name);
    if ($show_current) echo $sep . $before . get_the_title() . $after;
    } else {
    $cat = get_the_category(); $cat = $cat[0];
  2. @Dimox Dimox revised this gist Nov 17, 2016. 1 changed file with 10 additions and 9 deletions.
    19 changes: 10 additions & 9 deletions dimox_breadcrumbs.php
    Original file line number Diff line number Diff line change
    @@ -2,7 +2,7 @@
    /*
    * WordPress Breadcrumbs
    * author: Dimox
    * version: 2015.09.14
    * version: 2016.11.17
    * license: MIT
    */
    function dimox_breadcrumbs() {
    @@ -17,7 +17,7 @@ function dimox_breadcrumbs() {
    $text['page'] = 'Page %s'; // text 'Page N'
    $text['cpage'] = 'Comment Page %s'; // text 'Comment Page N'

    $wrap_before = '<div class="breadcrumbs">'; // the opening wrapper tag
    $wrap_before = '<div class="breadcrumbs" itemscope itemtype="http://schema.org/BreadcrumbList">'; // the opening wrapper tag
    $wrap_after = '</div><!-- .breadcrumbs -->'; // the closing wrapper tag
    $sep = ''; // separator between crumbs
    $sep_before = '<span class="sep">'; // tag before separator
    @@ -30,25 +30,26 @@ function dimox_breadcrumbs() {
    /* === END OF OPTIONS === */

    global $post;
    $home_link = home_url('/');
    $link_before = '<span itemscope itemtype="http://data-vocabulary.org/Breadcrumb">';
    $home_url = home_url('/');
    $link_before = '<span itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">';
    $link_after = '</span>';
    $link_attr = ' itemprop="url"';
    $link_in_before = '<span itemprop="title">';
    $link_attr = ' itemprop="item"';
    $link_in_before = '<span itemprop="name">';
    $link_in_after = '</span>';
    $link = $link_before . '<a href="%1$s"' . $link_attr . '>' . $link_in_before . '%2$s' . $link_in_after . '</a>' . $link_after;
    $frontpage_id = get_option('page_on_front');
    $parent_id = $post->post_parent;
    $sep = ' ' . $sep_before . $sep . $sep_after . ' ';
    $home_link = $link_before . '<a href="' . $home_url . '"' . $link_attr . ' class="home">' . $link_in_before . $text['home'] . $link_in_after . '</a>' . $link_after;

    if (is_home() || is_front_page()) {

    if ($show_on_home) echo $wrap_before . '<a href="' . $home_link . '">' . $text['home'] . '</a>' . $wrap_after;
    if ($show_on_home) echo $wrap_before . $home_link . $wrap_after;

    } else {

    echo $wrap_before;
    if ($show_home_link) echo sprintf($link, $home_link, $text['home']);
    if ($show_home_link) echo $home_link;

    if ( is_category() ) {
    $cat = get_category(get_query_var('cat'), false);
    @@ -95,7 +96,7 @@ function dimox_breadcrumbs() {
    if ( get_post_type() != 'post' ) {
    $post_type = get_post_type_object(get_post_type());
    $slug = $post_type->rewrite;
    printf($link, $home_link . '/' . $slug['slug'] . '/', $post_type->labels->singular_name);
    printf($link, $home_url . '/' . $slug['slug'] . '/', $post_type->labels->singular_name);
    if ($show_current) echo $sep . $before . get_the_title() . $after;
    } else {
    $cat = get_the_category(); $cat = $cat[0];
  3. @Dimox Dimox revised this gist Sep 13, 2015. 1 changed file with 65 additions and 51 deletions.
    116 changes: 65 additions & 51 deletions dimox_breadcrumbs.php
    Original file line number Diff line number Diff line change
    @@ -2,7 +2,7 @@
    /*
    * WordPress Breadcrumbs
    * author: Dimox
    * version: 2015.05.21
    * version: 2015.09.14
    * license: MIT
    */
    function dimox_breadcrumbs() {
    @@ -17,13 +17,14 @@ function dimox_breadcrumbs() {
    $text['page'] = 'Page %s'; // text 'Page N'
    $text['cpage'] = 'Comment Page %s'; // text 'Comment Page N'

    $delimiter = ''; // delimiter between crumbs
    $delim_before = '<span class="divider">'; // tag before delimiter
    $delim_after = '</span>'; // tag after delimiter
    $wrap_before = '<div class="breadcrumbs">'; // the opening wrapper tag
    $wrap_after = '</div><!-- .breadcrumbs -->'; // the closing wrapper tag
    $sep = ''; // separator between crumbs
    $sep_before = '<span class="sep">'; // tag before separator
    $sep_after = '</span>'; // tag after separator
    $show_home_link = 1; // 1 - show the 'Home' link, 0 - don't show
    $show_on_home = 0; // 1 - show breadcrumbs on the homepage, 0 - don't show
    $show_current = 1; // 1 - show current page title, 0 - don't show
    $show_title = 1; // 1 - show the title for the links, 0 - don't show
    $before = '<span class="current">'; // tag before the current crumb
    $after = '</span>'; // tag after the current crumb
    /* === END OF OPTIONS === */
    @@ -38,101 +39,103 @@ function dimox_breadcrumbs() {
    $link = $link_before . '<a href="%1$s"' . $link_attr . '>' . $link_in_before . '%2$s' . $link_in_after . '</a>' . $link_after;
    $frontpage_id = get_option('page_on_front');
    $parent_id = $post->post_parent;
    $delimiter = ' ' . $delim_before . $delimiter . $delim_after . ' ';
    $sep = ' ' . $sep_before . $sep . $sep_after . ' ';

    if (is_home() || is_front_page()) {

    if ($show_on_home == 1) echo '<div class="breadcrumbs"><a href="' . $home_link . '">' . $text['home'] . '</a></div>';
    if ($show_on_home) echo $wrap_before . '<a href="' . $home_link . '">' . $text['home'] . '</a>' . $wrap_after;

    } else {

    echo '<div class="breadcrumbs">';
    if ($show_home_link == 1) echo sprintf($link, $home_link, $text['home']);
    echo $wrap_before;
    if ($show_home_link) echo sprintf($link, $home_link, $text['home']);

    if ( is_category() ) {
    $cat = get_category(get_query_var('cat'), false);
    if ($cat->parent != 0) {
    $cats = get_category_parents($cat->parent, TRUE, $delimiter);
    $cats = preg_replace("#^(.+)$delimiter$#", "$1", $cats);
    $cats = get_category_parents($cat->parent, TRUE, $sep);
    $cats = preg_replace("#^(.+)$sep$#", "$1", $cats);
    $cats = preg_replace('#<a([^>]+)>([^<]+)<\/a>#', $link_before . '<a$1' . $link_attr .'>' . $link_in_before . '$2' . $link_in_after .'</a>' . $link_after, $cats);
    if ($show_title == 0) $cats = preg_replace('/ title="(.*?)"/', '', $cats);
    if ($show_home_link == 1) echo $delimiter;
    if ($show_home_link) echo $sep;
    echo $cats;
    }
    if ( get_query_var('paged') ) {
    $cat = $cat->cat_ID;
    echo $delimiter . sprintf($link, get_category_link($cat), get_cat_name($cat)) . $delimiter . $before . sprintf($text['page'], get_query_var('paged')) . $after;
    echo $sep . sprintf($link, get_category_link($cat), get_cat_name($cat)) . $sep . $before . sprintf($text['page'], get_query_var('paged')) . $after;
    } else {
    if ($show_current == 1) echo $delimiter . $before . sprintf($text['category'], single_cat_title('', false)) . $after;
    if ($show_current) echo $sep . $before . sprintf($text['category'], single_cat_title('', false)) . $after;
    }

    } elseif ( is_search() ) {
    if ($show_home_link == 1) echo $delimiter;
    echo $before . sprintf($text['search'], get_search_query()) . $after;
    if (have_posts()) {
    if ($show_home_link && $show_current) echo $sep;
    if ($show_current) echo $before . sprintf($text['search'], get_search_query()) . $after;
    } else {
    if ($show_home_link) echo $sep;
    echo $before . sprintf($text['search'], get_search_query()) . $after;
    }

    } elseif ( is_day() ) {
    if ($show_home_link == 1) echo $delimiter;
    echo sprintf($link, get_year_link(get_the_time('Y')), get_the_time('Y')) . $delimiter;
    echo sprintf($link, get_month_link(get_the_time('Y'), get_the_time('m')), get_the_time('F')) . $delimiter;
    echo $before . get_the_time('d') . $after;
    if ($show_home_link) echo $sep;
    echo sprintf($link, get_year_link(get_the_time('Y')), get_the_time('Y')) . $sep;
    echo sprintf($link, get_month_link(get_the_time('Y'), get_the_time('m')), get_the_time('F'));
    if ($show_current) echo $sep . $before . get_the_time('d') . $after;

    } elseif ( is_month() ) {
    if ($show_home_link == 1) echo $delimiter;
    echo sprintf($link, get_year_link(get_the_time('Y')), get_the_time('Y')) . $delimiter;
    echo $before . get_the_time('F') . $after;
    if ($show_home_link) echo $sep;
    echo sprintf($link, get_year_link(get_the_time('Y')), get_the_time('Y'));
    if ($show_current) echo $sep . $before . get_the_time('F') . $after;

    } elseif ( is_year() ) {
    if ($show_home_link == 1) echo $delimiter;
    echo $before . get_the_time('Y') . $after;
    if ($show_home_link && $show_current) echo $sep;
    if ($show_current) echo $before . get_the_time('Y') . $after;

    } elseif ( is_single() && !is_attachment() ) {
    if ($show_home_link == 1) echo $delimiter;
    if ($show_home_link) echo $sep;
    if ( get_post_type() != 'post' ) {
    $post_type = get_post_type_object(get_post_type());
    $slug = $post_type->rewrite;
    printf($link, $home_link . '/' . $slug['slug'] . '/', $post_type->labels->singular_name);
    if ($show_current == 1) echo $delimiter . $before . get_the_title() . $after;
    if ($show_current) echo $sep . $before . get_the_title() . $after;
    } else {
    $cat = get_the_category(); $cat = $cat[0];
    $cats = get_category_parents($cat, TRUE, $delimiter);
    if ($show_current == 0 || get_query_var('cpage')) $cats = preg_replace("#^(.+)$delimiter$#", "$1", $cats);
    $cats = get_category_parents($cat, TRUE, $sep);
    if (!$show_current || get_query_var('cpage')) $cats = preg_replace("#^(.+)$sep$#", "$1", $cats);
    $cats = preg_replace('#<a([^>]+)>([^<]+)<\/a>#', $link_before . '<a$1' . $link_attr .'>' . $link_in_before . '$2' . $link_in_after .'</a>' . $link_after, $cats);
    if ($show_title == 0) $cats = preg_replace('/ title="(.*?)"/', '', $cats);
    echo $cats;
    if ( get_query_var('cpage') ) {
    echo $delimiter . sprintf($link, get_permalink(), get_the_title()) . $delimiter . $before . sprintf($text['cpage'], get_query_var('cpage')) . $after;
    echo $sep . sprintf($link, get_permalink(), get_the_title()) . $sep . $before . sprintf($text['cpage'], get_query_var('cpage')) . $after;
    } else {
    if ($show_current == 1) echo $before . get_the_title() . $after;
    if ($show_current) echo $before . get_the_title() . $after;
    }
    }

    // custom post type
    } elseif ( !is_single() && !is_page() && get_post_type() != 'post' && !is_404() ) {
    $post_type = get_post_type_object(get_post_type());
    if ( get_query_var('paged') ) {
    echo $delimiter . sprintf($link, get_post_type_archive_link($post_type->name), $post_type->label) . $delimiter . $before . sprintf($text['page'], get_query_var('paged')) . $after;
    echo $sep . sprintf($link, get_post_type_archive_link($post_type->name), $post_type->label) . $sep . $before . sprintf($text['page'], get_query_var('paged')) . $after;
    } else {
    if ($show_current == 1) echo $delimiter . $before . $post_type->label . $after;
    if ($show_current) echo $sep . $before . $post_type->label . $after;
    }

    } elseif ( is_attachment() ) {
    if ($show_home_link == 1) echo $delimiter;
    if ($show_home_link) echo $sep;
    $parent = get_post($parent_id);
    $cat = get_the_category($parent->ID); $cat = $cat[0];
    if ($cat) {
    $cats = get_category_parents($cat, TRUE, $delimiter);
    $cats = get_category_parents($cat, TRUE, $sep);
    $cats = preg_replace('#<a([^>]+)>([^<]+)<\/a>#', $link_before . '<a$1' . $link_attr .'>' . $link_in_before . '$2' . $link_in_after .'</a>' . $link_after, $cats);
    if ($show_title == 0) $cats = preg_replace('/ title="(.*?)"/', '', $cats);
    echo $cats;
    }
    printf($link, get_permalink($parent), $parent->post_title);
    if ($show_current == 1) echo $delimiter . $before . get_the_title() . $after;
    if ($show_current) echo $sep . $before . get_the_title() . $after;

    } elseif ( is_page() && !$parent_id ) {
    if ($show_current == 1) echo $delimiter . $before . get_the_title() . $after;
    if ($show_current) echo $sep . $before . get_the_title() . $after;

    } elseif ( is_page() && $parent_id ) {
    if ($show_home_link == 1) echo $delimiter;
    if ($show_home_link) echo $sep;
    if ($parent_id != $frontpage_id) {
    $breadcrumbs = array();
    while ($parent_id) {
    @@ -145,30 +148,41 @@ function dimox_breadcrumbs() {
    $breadcrumbs = array_reverse($breadcrumbs);
    for ($i = 0; $i < count($breadcrumbs); $i++) {
    echo $breadcrumbs[$i];
    if ($i != count($breadcrumbs)-1) echo $delimiter;
    if ($i != count($breadcrumbs)-1) echo $sep;
    }
    }
    if ($show_current == 1) echo $delimiter . $before . get_the_title() . $after;
    if ($show_current) echo $sep . $before . get_the_title() . $after;

    } elseif ( is_tag() ) {
    if ($show_current == 1) echo $delimiter . $before . sprintf($text['tag'], single_tag_title('', false)) . $after;
    if ( get_query_var('paged') ) {
    $tag_id = get_queried_object_id();
    $tag = get_tag($tag_id);
    echo $sep . sprintf($link, get_tag_link($tag_id), $tag->name) . $sep . $before . sprintf($text['page'], get_query_var('paged')) . $after;
    } else {
    if ($show_current) echo $sep . $before . sprintf($text['tag'], single_tag_title('', false)) . $after;
    }

    } elseif ( is_author() ) {
    if ($show_home_link == 1) echo $delimiter;
    global $author;
    $author = get_userdata($author);
    echo $before . sprintf($text['author'], $author->display_name) . $after;
    if ( get_query_var('paged') ) {
    if ($show_home_link) echo $sep;
    echo sprintf($link, get_author_posts_url($author->ID), $author->display_name) . $sep . $before . sprintf($text['page'], get_query_var('paged')) . $after;
    } else {
    if ($show_home_link && $show_current) echo $sep;
    if ($show_current) echo $before . sprintf($text['author'], $author->display_name) . $after;
    }

    } elseif ( is_404() ) {
    if ($show_home_link == 1) echo $delimiter;
    echo $before . $text['404'] . $after;
    if ($show_home_link && $show_current) echo $sep;
    if ($show_current) echo $before . $text['404'] . $after;

    } elseif ( has_post_format() && !is_singular() ) {
    if ($show_home_link == 1) echo $delimiter;
    if ($show_home_link) echo $sep;
    echo get_post_format_string( get_post_format() );
    }

    echo '</div><!-- .breadcrumbs -->';
    echo $wrap_after;

    }
    } // end dimox_breadcrumbs()
    } // end of dimox_breadcrumbs()
  4. @Dimox Dimox revised this gist Sep 13, 2015. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions dimox_breadcrumbs.php
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,4 @@
    <?php
    /*
    * WordPress Breadcrumbs
    * author: Dimox
  5. @Dimox Dimox revised this gist Sep 13, 2015. 1 changed file with 1 addition and 5 deletions.
    6 changes: 1 addition & 5 deletions dimox_breadcrumbs.php
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,3 @@
    <?php

    /*
    * WordPress Breadcrumbs
    * author: Dimox
    @@ -172,6 +170,4 @@ function dimox_breadcrumbs() {
    echo '</div><!-- .breadcrumbs -->';

    }
    } // end dimox_breadcrumbs()

    ?>
    } // end dimox_breadcrumbs()
  6. @Dimox Dimox revised this gist Sep 11, 2015. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions dimox_breadcrumbs.php
    Original file line number Diff line number Diff line change
    @@ -4,6 +4,7 @@
    * WordPress Breadcrumbs
    * author: Dimox
    * version: 2015.05.21
    * license: MIT
    */
    function dimox_breadcrumbs() {

  7. @Dimox Dimox revised this gist May 21, 2015. No changes.
  8. @Dimox Dimox revised this gist May 21, 2015. No changes.
  9. @Dimox Dimox revised this gist May 21, 2015. 1 changed file with 6 additions and 3 deletions.
    9 changes: 6 additions & 3 deletions dimox_breadcrumbs.php
    Original file line number Diff line number Diff line change
    @@ -3,7 +3,7 @@
    /*
    * WordPress Breadcrumbs
    * author: Dimox
    * version: 2015.05.20
    * version: 2015.05.21
    */
    function dimox_breadcrumbs() {

    @@ -17,10 +17,12 @@ function dimox_breadcrumbs() {
    $text['page'] = 'Page %s'; // text 'Page N'
    $text['cpage'] = 'Comment Page %s'; // text 'Comment Page N'

    $delimiter = ''; // delimiter between crumbs
    $delimiter = ''; // delimiter between crumbs
    $delim_before = '<span class="divider">'; // tag before delimiter
    $delim_after = '</span>'; // tag after delimiter
    $show_home_link = 1; // 1 - show the 'Home' link, 0 - don't show
    $show_on_home = 0; // 1 - show breadcrumbs on the homepage, 0 - don't show
    $show_current = 1; // 1 - show current post/page/category/custom post type/tag title in breadcrumbs, 0 - don't show
    $show_current = 1; // 1 - show current page title, 0 - don't show
    $show_title = 1; // 1 - show the title for the links, 0 - don't show
    $before = '<span class="current">'; // tag before the current crumb
    $after = '</span>'; // tag after the current crumb
    @@ -36,6 +38,7 @@ function dimox_breadcrumbs() {
    $link = $link_before . '<a href="%1$s"' . $link_attr . '>' . $link_in_before . '%2$s' . $link_in_after . '</a>' . $link_after;
    $frontpage_id = get_option('page_on_front');
    $parent_id = $post->post_parent;
    $delimiter = ' ' . $delim_before . $delimiter . $delim_after . ' ';

    if (is_home() || is_front_page()) {

  10. @Dimox Dimox renamed this gist May 20, 2015. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  11. @Dimox Dimox revised this gist May 20, 2015. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion dimox_breadcrumbs
    Original file line number Diff line number Diff line change
    @@ -20,7 +20,7 @@ function dimox_breadcrumbs() {
    $delimiter = ' › '; // delimiter between crumbs
    $show_home_link = 1; // 1 - show the 'Home' link, 0 - don't show
    $show_on_home = 0; // 1 - show breadcrumbs on the homepage, 0 - don't show
    $show_current = 1; // 1 - show current post/page/category/custom post type/tag/ title in breadcrumbs, 0 - don't show
    $show_current = 1; // 1 - show current post/page/category/custom post type/tag title in breadcrumbs, 0 - don't show
    $show_title = 1; // 1 - show the title for the links, 0 - don't show
    $before = '<span class="current">'; // tag before the current crumb
    $after = '</span>'; // tag after the current crumb
  12. @Dimox Dimox renamed this gist May 20, 2015. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  13. @Dimox Dimox revised this gist May 20, 2015. 1 changed file with 65 additions and 46 deletions.
    111 changes: 65 additions & 46 deletions gistfile1.php
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,10 @@
    <?php

    /*
    * WordPress Breadcrumbs
    * author: Dimox
    * version: 2015.05.20
    */
    function dimox_breadcrumbs() {

    /* === OPTIONS === */
    @@ -9,102 +14,122 @@ function dimox_breadcrumbs() {
    $text['tag'] = 'Posts Tagged "%s"'; // text for a tag page
    $text['author'] = 'Articles Posted by %s'; // text for an author page
    $text['404'] = 'Error 404'; // text for the 404 page
    $text['page'] = 'Page %s'; // text 'Page N'
    $text['cpage'] = 'Comment Page %s'; // text 'Comment Page N'

    $show_current = 1; // 1 - show current post/page/category title in breadcrumbs, 0 - don't show
    $show_on_home = 0; // 1 - show breadcrumbs on the homepage, 0 - don't show
    $delimiter = ''; // delimiter between crumbs
    $show_home_link = 1; // 1 - show the 'Home' link, 0 - don't show
    $show_on_home = 0; // 1 - show breadcrumbs on the homepage, 0 - don't show
    $show_current = 1; // 1 - show current post/page/category/custom post type/tag/ title in breadcrumbs, 0 - don't show
    $show_title = 1; // 1 - show the title for the links, 0 - don't show
    $delimiter = ' &raquo; '; // delimiter between crumbs
    $before = '<span class="current">'; // tag before the current crumb
    $after = '</span>'; // tag after the current crumb
    /* === END OF OPTIONS === */

    global $post;
    $home_link = home_url('/');
    $link_before = '<span typeof="v:Breadcrumb">';
    $link_after = '</span>';
    $link_attr = ' rel="v:url" property="v:title"';
    $link = $link_before . '<a' . $link_attr . ' href="%1$s">%2$s</a>' . $link_after;
    $parent_id = $parent_id_2 = $post->post_parent;
    $frontpage_id = get_option('page_on_front');
    $home_link = home_url('/');
    $link_before = '<span itemscope itemtype="http://data-vocabulary.org/Breadcrumb">';
    $link_after = '</span>';
    $link_attr = ' itemprop="url"';
    $link_in_before = '<span itemprop="title">';
    $link_in_after = '</span>';
    $link = $link_before . '<a href="%1$s"' . $link_attr . '>' . $link_in_before . '%2$s' . $link_in_after . '</a>' . $link_after;
    $frontpage_id = get_option('page_on_front');
    $parent_id = $post->post_parent;

    if (is_home() || is_front_page()) {

    if ($show_on_home == 1) echo '<div class="breadcrumbs"><a href="' . $home_link . '">' . $text['home'] . '</a></div>';

    } else {

    echo '<div class="breadcrumbs" xmlns:v="http://rdf.data-vocabulary.org/#">';
    if ($show_home_link == 1) {
    echo '<a href="' . $home_link . '" rel="v:url" property="v:title">' . $text['home'] . '</a>';
    if ($frontpage_id == 0 || $parent_id != $frontpage_id) echo $delimiter;
    }
    echo '<div class="breadcrumbs">';
    if ($show_home_link == 1) echo sprintf($link, $home_link, $text['home']);

    if ( is_category() ) {
    $this_cat = get_category(get_query_var('cat'), false);
    if ($this_cat->parent != 0) {
    $cats = get_category_parents($this_cat->parent, TRUE, $delimiter);
    if ($show_current == 0) $cats = preg_replace("#^(.+)$delimiter$#", "$1", $cats);
    $cats = str_replace('<a', $link_before . '<a' . $link_attr, $cats);
    $cats = str_replace('</a>', '</a>' . $link_after, $cats);
    $cat = get_category(get_query_var('cat'), false);
    if ($cat->parent != 0) {
    $cats = get_category_parents($cat->parent, TRUE, $delimiter);
    $cats = preg_replace("#^(.+)$delimiter$#", "$1", $cats);
    $cats = preg_replace('#<a([^>]+)>([^<]+)<\/a>#', $link_before . '<a$1' . $link_attr .'>' . $link_in_before . '$2' . $link_in_after .'</a>' . $link_after, $cats);
    if ($show_title == 0) $cats = preg_replace('/ title="(.*?)"/', '', $cats);
    if ($show_home_link == 1) echo $delimiter;
    echo $cats;
    }
    if ($show_current == 1) echo $before . sprintf($text['category'], single_cat_title('', false)) . $after;
    if ( get_query_var('paged') ) {
    $cat = $cat->cat_ID;
    echo $delimiter . sprintf($link, get_category_link($cat), get_cat_name($cat)) . $delimiter . $before . sprintf($text['page'], get_query_var('paged')) . $after;
    } else {
    if ($show_current == 1) echo $delimiter . $before . sprintf($text['category'], single_cat_title('', false)) . $after;
    }

    } elseif ( is_search() ) {
    if ($show_home_link == 1) echo $delimiter;
    echo $before . sprintf($text['search'], get_search_query()) . $after;

    } elseif ( is_day() ) {
    if ($show_home_link == 1) echo $delimiter;
    echo sprintf($link, get_year_link(get_the_time('Y')), get_the_time('Y')) . $delimiter;
    echo sprintf($link, get_month_link(get_the_time('Y'),get_the_time('m')), get_the_time('F')) . $delimiter;
    echo sprintf($link, get_month_link(get_the_time('Y'), get_the_time('m')), get_the_time('F')) . $delimiter;
    echo $before . get_the_time('d') . $after;

    } elseif ( is_month() ) {
    if ($show_home_link == 1) echo $delimiter;
    echo sprintf($link, get_year_link(get_the_time('Y')), get_the_time('Y')) . $delimiter;
    echo $before . get_the_time('F') . $after;

    } elseif ( is_year() ) {
    if ($show_home_link == 1) echo $delimiter;
    echo $before . get_the_time('Y') . $after;

    } elseif ( is_single() && !is_attachment() ) {
    if ($show_home_link == 1) echo $delimiter;
    if ( get_post_type() != 'post' ) {
    $post_type = get_post_type_object(get_post_type());
    $slug = $post_type->rewrite;
    printf($link, $home_link . $slug['slug'] . '/', $post_type->labels->singular_name);
    printf($link, $home_link . '/' . $slug['slug'] . '/', $post_type->labels->singular_name);
    if ($show_current == 1) echo $delimiter . $before . get_the_title() . $after;
    } else {
    $cat = get_the_category(); $cat = $cat[0];
    $cats = get_category_parents($cat, TRUE, $delimiter);
    if ($show_current == 0) $cats = preg_replace("#^(.+)$delimiter$#", "$1", $cats);
    $cats = str_replace('<a', $link_before . '<a' . $link_attr, $cats);
    $cats = str_replace('</a>', '</a>' . $link_after, $cats);
    if ($show_current == 0 || get_query_var('cpage')) $cats = preg_replace("#^(.+)$delimiter$#", "$1", $cats);
    $cats = preg_replace('#<a([^>]+)>([^<]+)<\/a>#', $link_before . '<a$1' . $link_attr .'>' . $link_in_before . '$2' . $link_in_after .'</a>' . $link_after, $cats);
    if ($show_title == 0) $cats = preg_replace('/ title="(.*?)"/', '', $cats);
    echo $cats;
    if ($show_current == 1) echo $before . get_the_title() . $after;
    if ( get_query_var('cpage') ) {
    echo $delimiter . sprintf($link, get_permalink(), get_the_title()) . $delimiter . $before . sprintf($text['cpage'], get_query_var('cpage')) . $after;
    } else {
    if ($show_current == 1) echo $before . get_the_title() . $after;
    }
    }

    // custom post type
    } 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;
    if ( get_query_var('paged') ) {
    echo $delimiter . sprintf($link, get_post_type_archive_link($post_type->name), $post_type->label) . $delimiter . $before . sprintf($text['page'], get_query_var('paged')) . $after;
    } else {
    if ($show_current == 1) echo $delimiter . $before . $post_type->label . $after;
    }

    } elseif ( is_attachment() ) {
    if ($show_home_link == 1) echo $delimiter;
    $parent = get_post($parent_id);
    $cat = get_the_category($parent->ID); $cat = $cat[0];
    if ($cat) {
    $cats = get_category_parents($cat, TRUE, $delimiter);
    $cats = str_replace('<a', $link_before . '<a' . $link_attr, $cats);
    $cats = str_replace('</a>', '</a>' . $link_after, $cats);
    $cats = preg_replace('#<a([^>]+)>([^<]+)<\/a>#', $link_before . '<a$1' . $link_attr .'>' . $link_in_before . '$2' . $link_in_after .'</a>' . $link_after, $cats);
    if ($show_title == 0) $cats = preg_replace('/ title="(.*?)"/', '', $cats);
    echo $cats;
    }
    printf($link, get_permalink($parent), $parent->post_title);
    if ($show_current == 1) echo $delimiter . $before . get_the_title() . $after;

    } elseif ( is_page() && !$parent_id ) {
    if ($show_current == 1) echo $before . get_the_title() . $after;
    if ($show_current == 1) echo $delimiter . $before . get_the_title() . $after;

    } elseif ( is_page() && $parent_id ) {
    if ($show_home_link == 1) echo $delimiter;
    if ($parent_id != $frontpage_id) {
    $breadcrumbs = array();
    while ($parent_id) {
    @@ -120,32 +145,26 @@ function dimox_breadcrumbs() {
    if ($i != count($breadcrumbs)-1) echo $delimiter;
    }
    }
    if ($show_current == 1) {
    if ($show_home_link == 1 || ($parent_id_2 != 0 && $parent_id_2 != $frontpage_id)) echo $delimiter;
    echo $before . get_the_title() . $after;
    }
    if ($show_current == 1) echo $delimiter . $before . get_the_title() . $after;

    } elseif ( is_tag() ) {
    echo $before . sprintf($text['tag'], single_tag_title('', false)) . $after;
    if ($show_current == 1) echo $delimiter . $before . sprintf($text['tag'], single_tag_title('', false)) . $after;

    } elseif ( is_author() ) {
    global $author;
    $userdata = get_userdata($author);
    echo $before . sprintf($text['author'], $userdata->display_name) . $after;
    if ($show_home_link == 1) echo $delimiter;
    global $author;
    $author = get_userdata($author);
    echo $before . sprintf($text['author'], $author->display_name) . $after;

    } elseif ( is_404() ) {
    if ($show_home_link == 1) echo $delimiter;
    echo $before . $text['404'] . $after;

    } elseif ( has_post_format() && !is_singular() ) {
    if ($show_home_link == 1) echo $delimiter;
    echo get_post_format_string( get_post_format() );
    }

    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><!-- .breadcrumbs -->';

    }
  14. @Dimox Dimox revised this gist May 26, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion gistfile1.php
    Original file line number Diff line number Diff line change
    @@ -56,7 +56,7 @@ function dimox_breadcrumbs() {
    echo $before . sprintf($text['search'], get_search_query()) . $after;

    } elseif ( is_day() ) {
    echo sprprintf($linkntf($link, get_year_link(get_the_time('Y')), get_the_time('Y')) . $delimiter;
    echo sprintf($link, get_year_link(get_the_time('Y')), get_the_time('Y')) . $delimiter;
    echo sprintf($link, get_month_link(get_the_time('Y'),get_the_time('m')), get_the_time('F')) . $delimiter;
    echo $before . get_the_time('d') . $after;

  15. @Dimox Dimox revised this gist May 26, 2014. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions gistfile1.php
    Original file line number Diff line number Diff line change
    @@ -56,7 +56,7 @@ function dimox_breadcrumbs() {
    echo $before . sprintf($text['search'], get_search_query()) . $after;

    } elseif ( is_day() ) {
    echo sprintf($link, get_year_link(get_the_time('Y')), get_the_time('Y')) . $delimiter;
    echo sprprintf($linkntf($link, get_year_link(get_the_time('Y')), get_the_time('Y')) . $delimiter;
    echo sprintf($link, get_month_link(get_the_time('Y'),get_the_time('m')), get_the_time('F')) . $delimiter;
    echo $before . get_the_time('d') . $after;

    @@ -71,7 +71,7 @@ function dimox_breadcrumbs() {
    if ( get_post_type() != 'post' ) {
    $post_type = get_post_type_object(get_post_type());
    $slug = $post_type->rewrite;
    printf($link, $home_link . '/' . $slug['slug'] . '/', $post_type->labels->singular_name);
    printf($link, $home_link . $slug['slug'] . '/', $post_type->labels->singular_name);
    if ($show_current == 1) echo $delimiter . $before . get_the_title() . $after;
    } else {
    $cat = get_the_category(); $cat = $cat[0];
  16. @Dimox Dimox revised this gist Jan 19, 2014. 1 changed file with 3 additions and 0 deletions.
    3 changes: 3 additions & 0 deletions gistfile1.php
    Original file line number Diff line number Diff line change
    @@ -135,6 +135,9 @@ function dimox_breadcrumbs() {

    } elseif ( is_404() ) {
    echo $before . $text['404'] . $after;

    } elseif ( has_post_format() && !is_singular() ) {
    echo get_post_format_string( get_post_format() );
    }

    if ( get_query_var('paged') ) {
  17. @Dimox Dimox revised this gist Dec 31, 2013. 1 changed file with 7 additions and 5 deletions.
    12 changes: 7 additions & 5 deletions gistfile1.php
    Original file line number Diff line number Diff line change
    @@ -91,11 +91,13 @@ function dimox_breadcrumbs() {
    } elseif ( is_attachment() ) {
    $parent = get_post($parent_id);
    $cat = get_the_category($parent->ID); $cat = $cat[0];
    $cats = get_category_parents($cat, TRUE, $delimiter);
    $cats = str_replace('<a', $link_before . '<a' . $link_attr, $cats);
    $cats = str_replace('</a>', '</a>' . $link_after, $cats);
    if ($show_title == 0) $cats = preg_replace('/ title="(.*?)"/', '', $cats);
    echo $cats;
    if ($cat) {
    $cats = get_category_parents($cat, TRUE, $delimiter);
    $cats = str_replace('<a', $link_before . '<a' . $link_attr, $cats);
    $cats = str_replace('</a>', '</a>' . $link_after, $cats);
    if ($show_title == 0) $cats = preg_replace('/ title="(.*?)"/', '', $cats);
    echo $cats;
    }
    printf($link, get_permalink($parent), $parent->post_title);
    if ($show_current == 1) echo $delimiter . $before . get_the_title() . $after;

  18. @Dimox Dimox revised this gist Aug 17, 2013. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion gistfile1.php
    Original file line number Diff line number Diff line change
    @@ -36,7 +36,7 @@ function dimox_breadcrumbs() {

    echo '<div class="breadcrumbs" xmlns:v="http://rdf.data-vocabulary.org/#">';
    if ($show_home_link == 1) {
    echo sprintf($link, $home_link, $text['home']);
    echo '<a href="' . $home_link . '" rel="v:url" property="v:title">' . $text['home'] . '</a>';
    if ($frontpage_id == 0 || $parent_id != $frontpage_id) echo $delimiter;
    }

  19. @Dimox Dimox revised this gist May 29, 2013. 1 changed file with 7 additions and 5 deletions.
    12 changes: 7 additions & 5 deletions gistfile1.php
    Original file line number Diff line number Diff line change
    @@ -25,7 +25,7 @@ function dimox_breadcrumbs() {
    $link_after = '</span>';
    $link_attr = ' rel="v:url" property="v:title"';
    $link = $link_before . '<a' . $link_attr . ' href="%1$s">%2$s</a>' . $link_after;
    $parent_id = $post->post_parent;
    $parent_id = $parent_id_2 = $post->post_parent;
    $frontpage_id = get_option('page_on_front');

    if (is_home() || is_front_page()) {
    @@ -35,8 +35,10 @@ function dimox_breadcrumbs() {
    } else {

    echo '<div class="breadcrumbs" xmlns:v="http://rdf.data-vocabulary.org/#">';
    if ($show_home_link == 1) echo sprintf($link, $home_link, $text['home']);
    if ($parent_id != $frontpage_id && $show_home_link == 1) echo $delimiter;
    if ($show_home_link == 1) {
    echo sprintf($link, $home_link, $text['home']);
    if ($frontpage_id == 0 || $parent_id != $frontpage_id) echo $delimiter;
    }

    if ( is_category() ) {
    $this_cat = get_category(get_query_var('cat'), false);
    @@ -108,7 +110,7 @@ function dimox_breadcrumbs() {
    if ($parent_id != $frontpage_id) {
    $breadcrumbs[] = sprintf($link, get_permalink($page->ID), get_the_title($page->ID));
    }
    $parent_id = $page->post_parent;
    $parent_id = $page->post_parent;
    }
    $breadcrumbs = array_reverse($breadcrumbs);
    for ($i = 0; $i < count($breadcrumbs); $i++) {
    @@ -117,7 +119,7 @@ function dimox_breadcrumbs() {
    }
    }
    if ($show_current == 1) {
    if ($parent_id != $frontpage_id || $show_home_link == 1) echo $delimiter;
    if ($show_home_link == 1 || ($parent_id_2 != 0 && $parent_id_2 != $frontpage_id)) echo $delimiter;
    echo $before . get_the_title() . $after;
    }

  20. @Dimox Dimox revised this gist May 27, 2013. 1 changed file with 5 additions and 3 deletions.
    8 changes: 5 additions & 3 deletions gistfile1.php
    Original file line number Diff line number Diff line change
    @@ -2,7 +2,7 @@

    function dimox_breadcrumbs() {

    /* === OPTIONS === */
    /* === OPTIONS === */
    $text['home'] = 'Home'; // text for the 'Home' link
    $text['category'] = 'Archive by Category "%s"'; // text for a category page
    $text['search'] = 'Search Results for "%s" Query'; // text for a search results page
    @@ -20,7 +20,7 @@ function dimox_breadcrumbs() {
    /* === END OF OPTIONS === */

    global $post;
    $home_link = get_bloginfo('url') . '/';
    $home_link = home_url('/');
    $link_before = '<span typeof="v:Breadcrumb">';
    $link_after = '</span>';
    $link_attr = ' rel="v:url" property="v:title"';
    @@ -105,7 +105,9 @@ function dimox_breadcrumbs() {
    $breadcrumbs = array();
    while ($parent_id) {
    $page = get_page($parent_id);
    $breadcrumbs[] = sprintf($link, get_permalink($page->ID), get_the_title($page->ID));
    if ($parent_id != $frontpage_id) {
    $breadcrumbs[] = sprintf($link, get_permalink($page->ID), get_the_title($page->ID));
    }
    $parent_id = $page->post_parent;
    }
    $breadcrumbs = array_reverse($breadcrumbs);
  21. @Dimox Dimox created this gist May 26, 2013.
    145 changes: 145 additions & 0 deletions gistfile1.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,145 @@
    <?php

    function dimox_breadcrumbs() {

    /* === OPTIONS === */
    $text['home'] = 'Home'; // text for the 'Home' link
    $text['category'] = 'Archive by Category "%s"'; // text for a category page
    $text['search'] = 'Search Results for "%s" Query'; // text for a search results page
    $text['tag'] = 'Posts Tagged "%s"'; // text for a tag page
    $text['author'] = 'Articles Posted by %s'; // text for an author page
    $text['404'] = 'Error 404'; // text for the 404 page

    $show_current = 1; // 1 - show current post/page/category title in breadcrumbs, 0 - don't show
    $show_on_home = 0; // 1 - show breadcrumbs on the homepage, 0 - don't show
    $show_home_link = 1; // 1 - show the 'Home' link, 0 - don't show
    $show_title = 1; // 1 - show the title for the links, 0 - don't show
    $delimiter = ' &raquo; '; // delimiter between crumbs
    $before = '<span class="current">'; // tag before the current crumb
    $after = '</span>'; // tag after the current crumb
    /* === END OF OPTIONS === */

    global $post;
    $home_link = get_bloginfo('url') . '/';
    $link_before = '<span typeof="v:Breadcrumb">';
    $link_after = '</span>';
    $link_attr = ' rel="v:url" property="v:title"';
    $link = $link_before . '<a' . $link_attr . ' href="%1$s">%2$s</a>' . $link_after;
    $parent_id = $post->post_parent;
    $frontpage_id = get_option('page_on_front');

    if (is_home() || is_front_page()) {

    if ($show_on_home == 1) echo '<div class="breadcrumbs"><a href="' . $home_link . '">' . $text['home'] . '</a></div>';

    } else {

    echo '<div class="breadcrumbs" xmlns:v="http://rdf.data-vocabulary.org/#">';
    if ($show_home_link == 1) echo sprintf($link, $home_link, $text['home']);
    if ($parent_id != $frontpage_id && $show_home_link == 1) echo $delimiter;

    if ( is_category() ) {
    $this_cat = get_category(get_query_var('cat'), false);
    if ($this_cat->parent != 0) {
    $cats = get_category_parents($this_cat->parent, TRUE, $delimiter);
    if ($show_current == 0) $cats = preg_replace("#^(.+)$delimiter$#", "$1", $cats);
    $cats = str_replace('<a', $link_before . '<a' . $link_attr, $cats);
    $cats = str_replace('</a>', '</a>' . $link_after, $cats);
    if ($show_title == 0) $cats = preg_replace('/ title="(.*?)"/', '', $cats);
    echo $cats;
    }
    if ($show_current == 1) echo $before . sprintf($text['category'], single_cat_title('', false)) . $after;

    } elseif ( is_search() ) {
    echo $before . sprintf($text['search'], get_search_query()) . $after;

    } elseif ( is_day() ) {
    echo sprintf($link, get_year_link(get_the_time('Y')), get_the_time('Y')) . $delimiter;
    echo sprintf($link, get_month_link(get_the_time('Y'),get_the_time('m')), get_the_time('F')) . $delimiter;
    echo $before . get_the_time('d') . $after;

    } elseif ( is_month() ) {
    echo sprintf($link, get_year_link(get_the_time('Y')), get_the_time('Y')) . $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_type = get_post_type_object(get_post_type());
    $slug = $post_type->rewrite;
    printf($link, $home_link . '/' . $slug['slug'] . '/', $post_type->labels->singular_name);
    if ($show_current == 1) echo $delimiter . $before . get_the_title() . $after;
    } else {
    $cat = get_the_category(); $cat = $cat[0];
    $cats = get_category_parents($cat, TRUE, $delimiter);
    if ($show_current == 0) $cats = preg_replace("#^(.+)$delimiter$#", "$1", $cats);
    $cats = str_replace('<a', $link_before . '<a' . $link_attr, $cats);
    $cats = str_replace('</a>', '</a>' . $link_after, $cats);
    if ($show_title == 0) $cats = preg_replace('/ title="(.*?)"/', '', $cats);
    echo $cats;
    if ($show_current == 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($parent_id);
    $cat = get_the_category($parent->ID); $cat = $cat[0];
    $cats = get_category_parents($cat, TRUE, $delimiter);
    $cats = str_replace('<a', $link_before . '<a' . $link_attr, $cats);
    $cats = str_replace('</a>', '</a>' . $link_after, $cats);
    if ($show_title == 0) $cats = preg_replace('/ title="(.*?)"/', '', $cats);
    echo $cats;
    printf($link, get_permalink($parent), $parent->post_title);
    if ($show_current == 1) echo $delimiter . $before . get_the_title() . $after;

    } elseif ( is_page() && !$parent_id ) {
    if ($show_current == 1) echo $before . get_the_title() . $after;

    } elseif ( is_page() && $parent_id ) {
    if ($parent_id != $frontpage_id) {
    $breadcrumbs = array();
    while ($parent_id) {
    $page = get_page($parent_id);
    $breadcrumbs[] = sprintf($link, get_permalink($page->ID), get_the_title($page->ID));
    $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 ($show_current == 1) {
    if ($parent_id != $frontpage_id || $show_home_link == 1) echo $delimiter;
    echo $before . get_the_title() . $after;
    }

    } elseif ( is_tag() ) {
    echo $before . sprintf($text['tag'], single_tag_title('', false)) . $after;

    } elseif ( is_author() ) {
    global $author;
    $userdata = get_userdata($author);
    echo $before . sprintf($text['author'], $userdata->display_name) . $after;

    } elseif ( is_404() ) {
    echo $before . $text['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 '</div><!-- .breadcrumbs -->';

    }
    } // end dimox_breadcrumbs()

    ?>