Advertisement
catchmahesh

catch_responsive breadcrumb

Jun 22nd, 2016
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.37 KB | None | 0 0
  1. function catchresponsive_custom_breadcrumbs( $showOnHome, $delimiter ) {
  2.  
  3.         /* === OPTIONS === */
  4.         $text['home']     = __( 'Home', 'catch-responsive' ); // text for the 'Home' link
  5.         $text['category'] = __( '%1$s Archive for %2$s', 'catch-responsive' ); // text for a category page
  6.         $text['search']   = __( '%1$s Search results for: %2$s', 'catch-responsive' ); // text for a search results page
  7.         $text['tag']      = __( '%1$s Posts tagged %2$s', 'catch-responsive' ); // text for a tag page
  8.         $text['author']   = __( '%1$s View all posts by %2$s', 'catch-responsive' ); // text for an author page
  9.         $text['404']      = __( 'Error 404', 'catch-responsive' ); // text for the 404 page
  10.  
  11.         $showCurrent = 1; // 1 - show current post/page title in breadcrumbs, 0 - don't show
  12.         $before      = '<span class="breadcrumb-current">'; // tag before the current crumb
  13.         $after       = '</span>'; // tag after the current crumb
  14.         /* === END OF OPTIONS === */
  15.  
  16.         global $post, $paged, $page;
  17.         $homeLink   = home_url( '/' );
  18.         $linkBefore = '<span class="breadcrumb" typeof="v:Breadcrumb">';
  19.         $linkAfter  = '</span>';
  20.         $linkAttr   = ' rel="v:url" property="v:title"';
  21.         $link       = $linkBefore . '<a' . $linkAttr . ' href="%1$s">%2$s ' . $delimiter . '</a>' . $linkAfter;
  22.  
  23.  
  24.         if( is_front_page() ) {
  25.  
  26.             if( $showOnHome ) {
  27.                 echo '<div id="breadcrumb-list">
  28.                     <div class="wrapper">';
  29.  
  30.                     echo $linkBefore . '<a href="' . esc_url( $homeLink ) . '" ' . $linkAttr . '>' . $text['home'] . '</a>' . $linkAfter;
  31.  
  32.                     echo '</div><!-- .wrapper -->
  33.                 </div><!-- #breadcrumb-list -->';
  34.             }
  35.  
  36.         }
  37.         else {
  38.             echo '<div id="breadcrumb-list">
  39.                     <div class="wrapper">';
  40.  
  41.             echo sprintf( $link, $homeLink, $text['home'] );
  42.  
  43.             if( is_home() ) {
  44.                 if( $showCurrent == 1 ) {
  45.                     echo $before . get_the_title( get_option( 'page_for_posts', true ) ) . $after;
  46.                 }
  47.  
  48.             }
  49.             elseif( is_category() ) {
  50.                 $thisCat = get_category( get_query_var( 'cat' ), false );
  51.                 if( $thisCat->parent != 0 ) {
  52.                     $cats = get_category_parents( $thisCat->parent, true, false );
  53.                     $cats = str_replace( '<a', $linkBefore . '<a' . $linkAttr, $cats );
  54.                     $cats = str_replace( '</a>', $delimiter .'</a>' . $linkAfter, $cats );
  55.                     echo $cats;
  56.                 }
  57.                 echo $before . sprintf( $text['category'], '<span class="archive-text">', '&nbsp</span>' . single_cat_title( '', false ) ) . $after;
  58.  
  59.             }
  60.             elseif( is_search() ) {
  61.                 echo $before . sprintf( $text['search'], '<span class="search-text">', '&nbsp</span>' . get_search_query() ) . $after;
  62.  
  63.             }
  64.             elseif( is_day() ) {
  65.                 echo sprintf( $link, get_year_link( get_the_time( 'Y' ) ), get_the_time( 'Y' ) ) ;
  66.                 echo sprintf( $link, get_month_link( get_the_time( 'Y' ), get_the_time( 'm' ) ), get_the_time( 'F' ) );
  67.                 echo $before . get_the_time( 'd' ) . $after;
  68.  
  69.             }
  70.             elseif( is_month() ) {
  71.                 echo sprintf( $link, get_year_link( get_the_time( 'Y' ) ), get_the_time( 'Y' ) ) ;
  72.                 echo $before . get_the_time( 'F' ) . $after;
  73.  
  74.             }
  75.             elseif( is_year() ) {
  76.                 echo $before . get_the_time( 'Y' ) . $after;
  77.  
  78.             }
  79.             elseif( is_single() && !is_attachment() ) {
  80.                 if( get_post_type() != 'post' ) {
  81.                     $post_type = get_post_type_object( get_post_type() );
  82.                     $slug      = $post_type->rewrite;
  83.                     printf( $link, $homeLink . '/' . $slug['slug'] . '/', $post_type->labels->singular_name );
  84.                     if( $showCurrent == 1 ) {
  85.                         echo $before . get_the_title() . $after;
  86.                     }
  87.                 }
  88.                 else {
  89.                     $cat  = get_the_category();
  90.                     $cat  = $cat[0];
  91.                     $cats = get_category_parents( $cat, true, ''     );
  92.                     if( $showCurrent == 0 ) {
  93.                         $cats = preg_replace( "#^(.+)$#", "$1", $cats );
  94.                     }
  95.                     $cats = str_replace( '<a', $linkBefore . '<a' . $linkAttr, $cats );
  96.                     $cats = str_replace( '</a>', $delimiter .'</a>' . $linkAfter, $cats );
  97.                     echo $cats;
  98.                     if( $showCurrent == 1 ) {
  99.                         echo $before . get_the_title() . $after;
  100.                     }
  101.                 }
  102.             }
  103.             elseif( !is_single() && !is_page() && get_post_type() != 'post' && !is_404() ) {
  104.                 $post_type = get_post_type_object( get_post_type() );
  105.                 echo $before . $post_type->labels->singular_name . $after;
  106.             }
  107.             elseif( is_attachment() ) {
  108.                 $parent = get_post( $post->post_parent );
  109.                 $cat    = get_the_category( $parent->ID );
  110.  
  111.                 if( isset( $cat[0] ) ) {
  112.                     $cat = $cat[0];
  113.                 }
  114.  
  115.                 if( $cat ) {
  116.                     $cats = get_category_parents( $cat, true );
  117.                     $cats = str_replace( '<a', $linkBefore . '<a' . $linkAttr, $cats );
  118.                     $cats = str_replace( '</a>', $delimiter .'</a>' . $linkAfter, $cats );
  119.                     echo $cats;
  120.                 }
  121.  
  122.                 printf( $link, get_permalink( $parent ), $parent->post_title );
  123.                 if( $showCurrent == 1 ) {
  124.                     echo $before . get_the_title() . $after;
  125.                 }
  126.  
  127.             }
  128.             elseif( is_page() && !$post->post_parent ) {
  129.                 if( $showCurrent == 1 ) {
  130.                     echo $before . get_the_title() . $after;
  131.                 }
  132.  
  133.             }
  134.             elseif( is_page() && $post->post_parent ) {
  135.                 $parent_id   = $post->post_parent;
  136.                 $breadcrumbs = array();
  137.                 while( $parent_id ) {
  138.                     $page_child    = get_post( $parent_id );
  139.                     $breadcrumbs[] = sprintf( $link, get_permalink( $page_child->ID ), get_the_title( $page_child->ID ) );
  140.                     $parent_id     = $page_child->post_parent;
  141.                 }
  142.                 $breadcrumbs = array_reverse( $breadcrumbs );
  143.                 for( $i = 0; $i < count( $breadcrumbs ); $i++ ) {
  144.                     echo $breadcrumbs[$i];
  145.                 }
  146.                 if( $showCurrent == 1 ) {
  147.                     echo $before . get_the_title() . $after;
  148.                 }
  149.  
  150.             }
  151.             elseif( is_tag() ) {
  152.                 echo $before . sprintf( $text['tag'], '<span class="tag-text">', '&nbsp</span>' . single_tag_title( '', false ) ) . $after;
  153.  
  154.             }
  155.             elseif( is_author() ) {
  156.                 global $author;
  157.                 $userdata = get_userdata( $author );
  158.                 echo $before . sprintf( $text['author'], '<span class="author-text">', '&nbsp</span>' . $userdata->display_name ) . $after;
  159.  
  160.             }
  161.             elseif( is_404() ) {
  162.                 echo $before . $text['404'] . $after;
  163.  
  164.             }
  165.             if( get_query_var( 'paged' ) ) {
  166.                 if( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) {
  167.                     echo ' (';
  168.                 }
  169.                 echo sprintf( __( 'Page %s', 'catch-responsive' ), max( $paged, $page ) );
  170.                 if( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) {
  171.                     echo ')';
  172.                 }
  173.             }
  174.  
  175.             echo '</div><!-- .wrapper -->
  176.             </div><!-- #breadcrumb-list -->';
  177.         }
  178.  
  179.  
  180.     } // end catchresponsive_breadcrumb_lists
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement