Advertisement
Guest User

breadcrumbs2

a guest
Apr 27th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.83 KB | None | 0 0
  1. <?php
  2. // start gg_breadcrumb
  3. function villenoir_breadcrumbs(array $options = array() ) {
  4.  
  5. // default values assigned to options
  6. $options = array_merge(array(
  7. 'crumbId' => 'nav_crumb', // id for the breadcrumb Div
  8. 'crumbClass' => 'nav_crumb', // class for the breadcrumb Div
  9. 'beginningText' => '', // text showing before breadcrumb starts
  10. 'showOnHome' => 1,// 1 - show breadcrumbs on the homepage, 0 - don't show
  11. 'delimiter' => ' <span class="delimiter">&frasl;</span> ', // delimiter between crumbs
  12. 'homePageText' => esc_html__('Home', 'villenoir'), // text for the 'Home' link
  13. 'showCurrent' => 1, // 1 - show current post/page title in breadcrumbs, 0 - don't show
  14. 'beforeTag' => '<span class="current">', // tag before the current breadcrumb
  15. 'afterTag' => '</span>', // tag after the current crumb
  16. 'showTitle' => 1, // showing post/page title or slug if title to show then 1
  17. 'position' => 'left'
  18. ), $options);
  19.  
  20. $crumbId = $options['crumbId'];
  21. $crumbClass = $options['crumbClass'];
  22. $beginningText = $options['beginningText'] ;
  23. $showOnHome = $options['showOnHome'];
  24. $delimiter = $options['delimiter'];
  25. $homePageText = $options['homePageText'];
  26. $showCurrent = $options['showCurrent'];
  27. $beforeTag = $options['beforeTag'];
  28. $afterTag = $options['afterTag'];
  29. $showTitle = $options['showTitle'];
  30. $crumbPosition = $options['position'];
  31.  
  32. global $post;
  33.  
  34. $wp_query = $GLOBALS['wp_query'];
  35.  
  36. $homeLink = esc_url( home_url( '/' ) );
  37.  
  38. echo '<div id="'.esc_attr($crumbId).'" class="'.esc_attr($crumbClass).' '.esc_attr($crumbPosition).'" >'.esc_html($beginningText);
  39.  
  40. if ( is_home() || is_front_page() ) {
  41.  
  42. if ($showOnHome == 1)
  43. echo wp_kses_post($beforeTag) . esc_html($homePageText) . wp_kses_post($afterTag);
  44.  
  45. } else {
  46.  
  47. if ( villenoir_is_wc_activated() && !is_woocommerce() ) {
  48. echo '<a href="' . esc_url($homeLink) . '">' . esc_html($homePageText) . '</a> ' . wp_kses_post($delimiter) . ' ';
  49. }
  50.  
  51. if (villenoir_is_wc_activated() && is_woocommerce()) {
  52.  
  53. echo woocommerce_breadcrumb();
  54.  
  55. } elseif ( is_category() ) {
  56.  
  57. $thisCat = get_category(get_query_var('cat'), false);
  58. if ($thisCat->parent != 0)
  59. echo get_category_parents($thisCat->parent, TRUE, ' ' . wp_kses_post($delimiter) . ' ');
  60. echo wp_kses_post($beforeTag) . 'Archive by category "' . single_cat_title('', false) . '"' . wp_kses_post($afterTag);
  61.  
  62. } elseif ( is_tax() ) {
  63.  
  64. $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );
  65.  
  66. $parents = array();
  67. $parent = $term->parent;
  68. while ( $parent ) {
  69. $parents[] = $parent;
  70. $new_parent = get_term_by( 'id', $parent, get_query_var( 'taxonomy' ) );
  71. $parent = $new_parent->parent;
  72. }
  73. if ( ! empty( $parents ) ) {
  74. $parents = array_villenoir( $parents );
  75. foreach ( $parents as $parent ) {
  76. $item = get_term_by( 'id', $parent, get_query_var( 'taxonomy' ));
  77. echo '<a href="' . get_term_link( $item->slug, get_query_var( 'taxonomy' ) ) . '">' . $item->name . '</a>' . wp_kses_post($delimiter);
  78. }
  79. }
  80.  
  81. $queried_object = $wp_query->get_queried_object();
  82. echo wp_kses_post($beforeTag) . $queried_object->name . wp_kses_post($afterTag);
  83.  
  84. } elseif ( is_search() ) {
  85.  
  86. echo wp_kses_post($beforeTag) . 'Search results for "' . get_search_query() . '"' . wp_kses_post($afterTag);
  87.  
  88. } elseif ( is_day() ) {
  89.  
  90. echo '<a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a> ' . wp_kses_post($delimiter) . ' ';
  91. echo '<a href="' . get_month_link(get_the_time('Y'),get_the_time('m')) . '">' . get_the_time('F') . '</a> ' . wp_kses_post($delimiter) . ' ';
  92. echo wp_kses_post($beforeTag) . get_the_time('d') . wp_kses_post($afterTag);
  93.  
  94. } elseif ( is_month() ) {
  95.  
  96. echo '<a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a> ' . wp_kses_post($delimiter) . ' ';
  97. echo wp_kses_post($beforeTag) . get_the_time('F') . wp_kses_post($afterTag);
  98.  
  99. } elseif ( is_year() ) {
  100.  
  101. echo wp_kses_post($beforeTag) . get_the_time('Y') . wp_kses_post($afterTag);
  102.  
  103. } elseif ( is_single() && !is_attachment() ) {
  104.  
  105. if($showTitle)
  106. $title = get_the_title();
  107. else
  108. $title = $post->post_name;
  109.  
  110. if ( get_post_type() != 'post' ) {
  111. $post_type = get_post_type_object(get_post_type());
  112. $slug = $post_type->rewrite;
  113. echo '<a href="' . esc_url($homeLink) . '/' . $slug['slug'] . '/">' . $post_type->labels->name . '</a>';
  114. if ($showCurrent == 1)
  115. echo ' ' . wp_kses_post($delimiter) . ' ' . wp_kses_post($beforeTag) . $title . wp_kses_post($afterTag);
  116. } else {
  117. $cat = get_the_category(); $cat = $cat[0];
  118. $cats = get_category_parents($cat, TRUE, ' ' . wp_kses_post($delimiter) . ' ');
  119. if ($showCurrent == 0)
  120. $cats = preg_replace("#^(.+)\s$delimiter\s$#", "$1", $cats);
  121. echo wp_kses_post($cats);
  122. if ($showCurrent == 1)
  123. echo wp_kses_post($beforeTag) . $title . wp_kses_post($afterTag);
  124. }
  125.  
  126. } elseif ( !is_single() && !is_page() && get_post_type() != 'post' && !is_404() ) {
  127.  
  128. $post_type = get_query_var( 'post_type' );
  129. $post_type_object = get_post_type_object( $post_type );
  130. echo wp_kses_post($beforeTag) . $post_type_object->labels->name . wp_kses_post($afterTag);
  131.  
  132. } elseif ( is_attachment() ) {
  133.  
  134. $parent = get_post($post->post_parent);
  135. $cat = get_the_category($parent->ID);
  136.  
  137. if ($cat) {
  138. $cat = $cat[0];
  139. echo get_category_parents($cat, TRUE, ' ' . wp_kses_post($delimiter) . ' ');
  140. }
  141. echo '<a href="' . get_permalink($parent) . '">' . $parent->post_title . '</a>';
  142. if ($showCurrent == 1)
  143. echo ' ' . wp_kses_post($delimiter) . ' ' . wp_kses_post($beforeTag) . get_the_title() . wp_kses_post($afterTag);
  144.  
  145. } elseif ( is_page() && !$post->post_parent ) {
  146.  
  147. $title = ($showTitle) ? get_the_title() : $post->post_name;
  148. if ($showCurrent == 1)
  149. echo wp_kses_post($beforeTag) . $title . wp_kses_post($afterTag);
  150.  
  151. } elseif ( is_page() && $post->post_parent ) {
  152.  
  153. $parent_id = $post->post_parent;
  154. $breadcrumbs = array();
  155. while ($parent_id) {
  156. $page = get_page($parent_id);
  157. $breadcrumbs[] = '<a href="' . get_permalink($page->ID) . '">' . get_the_title($page->ID) . '</a>';
  158. $parent_id = $page->post_parent;
  159. }
  160. $breadcrumbs = array_reverse($breadcrumbs);
  161. for ($i = 0; $i < count($breadcrumbs); $i++) {
  162. echo wp_kses_post($breadcrumbs[$i]);
  163. if ($i != count($breadcrumbs)-1)
  164. echo ' ' . wp_kses_post($delimiter) . ' ';
  165. }
  166. $title = ($showTitle) ? get_the_title() : $post->post_name;
  167. if ($showCurrent == 1)
  168. echo ' ' . wp_kses_post($delimiter) . ' ' . wp_kses_post($beforeTag) . $title . wp_kses_post($afterTag);
  169.  
  170. } elseif ( is_tag() ) {
  171.  
  172. echo wp_kses_post($beforeTag) . esc_html__('Posts tagged', 'villenoir') . ' " ' . single_tag_title('', false) . ' "' . wp_kses_post($afterTag);
  173.  
  174. } elseif ( is_author() ) {
  175.  
  176. global $author;
  177. $userdata = get_userdata($author);
  178. echo wp_kses_post($beforeTag) . esc_html__('Articles posted by', 'villenoir') . $userdata->display_name . wp_kses_post($afterTag);
  179.  
  180. } elseif ( is_404() ) {
  181.  
  182. echo wp_kses_post($beforeTag) . esc_html__('Error 404', 'villenoir') . wp_kses_post($afterTag);
  183.  
  184. }
  185.  
  186. if ( get_query_var('paged') ) {
  187. if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() || is_tax() )
  188. echo ' (';
  189. echo wp_kses_post($delimiter) . esc_html__('Page', 'villenoir') . ' ' . get_query_var('paged');
  190. if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() || is_tax() )
  191. echo ')';
  192. }
  193. }
  194. echo '</div>';
  195. }
  196. // end gg_breadcrumb
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement