当前位置:首页 > CMS教程 > WordPress > 列表

WordPress免插件实现面包屑导航的示例代码

发布:smiling 来源: PHP粉丝网  添加日期:2022-03-23 09:34:14 浏览: 评论:0 

你如果在开发自己的wordpress主题,想加入面包屑导航,而又不想使用插件的话,下面的代码对你有帮助,这里提供了网上较为流行的两种代码,一是功能非常完善的,一是一个较为简洁的代码。

前面介绍了一种方法,你也可以尝试一下,在文末给大家详细介绍了自定义函数实现wordpress面包屑导航的代码,可以点击查看下。

功能非常完善代码

1、将下面的代码添加到主题的 functions.php :

  1. /** 
  2.  * WordPress 添加面包屑导航  
  3.  * http://www.511yj.com/wordpress-add-breadcrumb.html 
  4.  */ 
  5. function cmp_breadcrumbs() { 
  6.  $delimiter = '»'// 分隔符 
  7.  $before = '<span class="current">'// 在当前链接前插入 
  8.  $after = '</span>'// 在当前链接后插入 
  9.  if ( !is_home() && !is_front_page() || is_paged() ) { 
  10.  echo '<div itemscope itemtype="http://schema.org/WebPage" id="crumbs">'.__( '当前位置:' , 'cmp' ); 
  11.  global $post
  12.  $homeLink = home_url(); 
  13.  echo ' <a itemprop="breadcrumb" href="' . $homeLink . '" rel="external nofollow" >' . __( '无作为' , 'cmp' ) . '</a> ' . $delimiter . ' '
  14.  if ( is_category() ) { // 分类 存档 
  15.  global $wp_query
  16.  $cat_obj = $wp_query->get_queried_object(); 
  17.  $thisCat = $cat_obj->term_id; 
  18.  $thisCat = get_category($thisCat); 
  19.  $parentCat = get_category($thisCat->parent); 
  20.  if ($thisCat->parent != 0){ 
  21.  $cat_code = get_category_parents($parentCat, TRUE, ' ' . $delimiter . ' '); 
  22.  echo $cat_code = str_replace ('<a','<a itemprop="breadcrumb"'$cat_code ); 
  23.  } 
  24.  echo $before . '' . single_cat_title('', false) . '' . $after
  25.  } elseif ( is_day() ) { // 天 存档 
  26.  echo '<a itemprop="breadcrumb" href="' . get_year_link(get_the_time('Y')) . '" rel="external nofollow" rel="external nofollow" >' . get_the_time('Y') . '</a> ' . $delimiter . ' '
  27.  echo '<a itemprop="breadcrumb" href="' . get_month_link(get_the_time('Y'),get_the_time('m')) . '" rel="external nofollow" >' . get_the_time('F') . '</a> ' . $delimiter . ' '
  28.  echo $before . get_the_time('d') . $after
  29.  } elseif ( is_month() ) { // 月 存档 
  30.  echo '<a itemprop="breadcrumb" href="' . get_year_link(get_the_time('Y')) . '" rel="external nofollow" rel="external nofollow" >' . get_the_time('Y') . '</a> ' . $delimiter . ' '
  31.  echo $before . get_the_time('F') . $after
  32.  } elseif ( is_year() ) { // 年 存档 
  33.  echo $before . get_the_time('Y') . $after
  34.  } elseif ( is_single() && !is_attachment() ) { // 文章 
  35.  if ( get_post_type() != 'post' ) { // 自定义文章类型 
  36.  $post_type = get_post_type_object(get_post_type()); 
  37.  $slug = $post_type->rewrite; 
  38.  echo '<a itemprop="breadcrumb" href="' . $homeLink . '/' . $slug['slug'] . '/" rel="external nofollow" >' . $post_type->labels->singular_name . '</a> ' . $delimiter . ' '
  39.  echo $before . get_the_title() . $after
  40.  } else { // 文章 post 
  41.  $cat = get_the_category(); $cat = $cat[0]; 
  42.  $cat_code = get_category_parents($cat, TRUE, ' ' . $delimiter . ' '); 
  43.  echo $cat_code = str_replace ('<a','<a itemprop="breadcrumb"'$cat_code ); 
  44.  echo $before . get_the_title() . $after
  45.  } 
  46.  } elseif ( !is_single() && !is_page() && get_post_type() != 'post' ) { 
  47.  $post_type = get_post_type_object(get_post_type()); 
  48.  echo $before . $post_type->labels->singular_name . $after
  49.  } elseif ( is_attachment() ) { // 附件 
  50.  $parent = get_post($post->post_parent); 
  51.  $cat = get_the_category($parent->ID); $cat = $cat[0]; 
  52.  echo '<a itemprop="breadcrumb" href="' . get_permalink($parent) . '" rel="external nofollow" >' . $parent->post_title . '</a> ' . $delimiter . ' '
  53.  echo $before . get_the_title() . $after
  54.  } elseif ( is_page() && !$post->post_parent ) { // 页面 
  55.  echo $before . get_the_title() . $after
  56.  } elseif ( is_page() && $post->post_parent ) { // 父级页面 
  57.  $parent_id = $post->post_parent; 
  58.  $breadcrumbs = array(); 
  59.  while ($parent_id) { 
  60.  $page = get_page($parent_id); 
  61.  $breadcrumbs[] = '<a itemprop="breadcrumb" href="' . get_permalink($page->ID) . '" rel="external nofollow" >' . get_the_title($page->ID) . '</a>'
  62.  $parent_id = $page->post_parent; 
  63.  } 
  64.  $breadcrumbs = array_reverse($breadcrumbs); 
  65.  foreach ($breadcrumbs as $crumbecho $crumb . ' ' . $delimiter . ' '
  66.  echo $before . get_the_title() . $after
  67.  } elseif ( is_search() ) { // 搜索结果 
  68.  echo $before ; 
  69.  printf( __( 'Search Results for: %s''cmp' ), get_search_query() ); 
  70.  echo $after
  71.  } elseif ( is_tag() ) { //标签 存档 
  72.  echo $before ; 
  73.  printf( __( 'Tag Archives: %s''cmp' ), single_tag_title( '', false ) ); 
  74.  echo $after
  75.  } elseif ( is_author() ) { // 作者存档 
  76.  global $author
  77.  $userdata = get_userdata($author); 
  78.  echo $before ; 
  79.  printf( __( 'Author Archives: %s''cmp' ), $userdata->display_name ); 
  80.  echo $after
  81.  } elseif ( is_404() ) { // 404 页面 
  82.  echo $before
  83.  _e( 'Not Found''cmp' ); 
  84.  echo $after
  85.  } 
  86.  if ( get_query_var('paged') ) { // 分页 
  87.  if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) 
  88.  echo sprintf( __( '( Page %s )''cmp' ), get_query_var('paged') ); 
  89.  } 
  90.  echo '</div>'
  91.  } 

前台调用

<?php if(function_exists('cmp_breadcrumbs')) cmp_breadcrumbs();?>

下面看下自定义函数实现wordpress面包屑导航的代码

面包屑导航 一是方便读者所在的位置,更重要的是对SEO非常友好,利于蜘蛛知道你网站的目录结构,所以给我们的wordpress主题添加面包屑导航是必须的。

1、在functioss.php添加以下代码

  1. /** 
  2.  * WordPress 添加面包屑导航  
  3.  * 面包屑导航,直接输出(echo) 
  4.  * Breadcrumb Trail 
  5.  * @param string $sep 导航对象分隔符,默认为' > ' 
  6.  */ 
  7. function bread_nav($sep = ' > '){ 
  8.   echo '<div class="col-md-12 "><span class="glyphicon glyphicon-home text-primary"></span> 您当前的位置: <a href="'. home_url() .'" title="首页">首页</a>'
  9.   if ( is_category() ){  //如果是栏目页面 
  10.     global $cat;     
  11.     echo $sep . get_category_parents($cat, true, $sep) . '文章列表'
  12.   }elseif ( is_page() ){  //如果是自定义页面 
  13.     echo $sep . get_the_title(); 
  14.   }elseif ( is_single() ){  //如果是文章页面 
  15.     $categories = get_the_category(); 
  16.     $cat = $categories[0]; 
  17.     echo $sep . get_category_parents($cat->term_id, true, $sep) .'正文内容 '. get_the_title();  
  18.   } 
  19.   echo '</div>'

2、前台调用

<?php bread_nav();?>

Tags: WordPress面包屑导航

分享到: