现在的位置: 主页 > 公司荣誉 > 文章列表

给WordPress添加一个面包屑导航的方法

作者:程力专用汽车股份有限公司 来源:www.dfclxwc.com 未知发布时间:2017-09-10 10:09:19
给WordPress添加一个面包屑导航的方法

面包屑导航(Breadcrumbs)是网页导航设计中一个标准设计模式,在网站浏览中非常有用。这篇文章主要介绍非插件的方式在WordPress中如何打造恰当、全面的面包屑导航,包括分类嵌套和页面嵌套。需要声明的一点是我是基于bootstrap前台为元素添加相应类的:

期间遇到在分类归档页面下该分类仍然是一个链接并且后面带有>>,这是因为系统函数get_category_parents默认循环输出分类的结果,我的解决办法是重写了get_category_parents方法,在分类目录下去调用重写的my_get_category_parents函数而不是get_category_parents,这样就解决了这个问题。

将下面的函数放在主题functions.php中:

function get_breadcrumbs() { global $wp_query; if ( !is_home() ){ // Start the UL echo '

'; // Add the Home link echo '

//自定义获取分类链接链的函数 function my_get_category_parents( $id, $link = true, $separator = '/', $nicename = false, $srcid, $visited = array() ) { $chain = ''; $parent = get_category( $id ); if ( is_wp_error( $parent ) ) return $parent; if ( $nicename ) $name = $parent->slug; else $name = $parent->name; if ( $parent->parent && ( $parent->parent != $parent->term_id ) && !in_array( $parent->parent, $visited ) ) { $visited[] = $parent->parent; $chain .= my_get_category_parents( $parent->parent, $link, $separator, $nicename, $srcid, $visited ); } $has_children = false; if($id == $srcid){ $has_children = false; }else{ $has_children = true; } if($has_children){ if ( $link ) $chain .= '

面包屑调用代码:

面包屑分析:

首先,如果是首页则不显示面包屑导航;如果不是首页则添加首页的链接; 然后是一些列的判断语句,覆盖了所有可能出现的不同位置,一些语句已经不言自明,比如搜索、404页面、存档页; 如果是一个分类,先获取分类ID,然后通过ID获取其上级分类列表,这里使用了WordPress提供的函数get_category_parents(); 如果是一篇文章,必须先获取所属分类ID,但方法和上面稍有不同。一旦获取了分类ID,就和上面一样添加文章标题即可。

页面导航:

首先获取页面标题; 然后获取页面的祖先并颠倒他们的顺序,借助WordPress内置的get_post_ancestors()函数可以轻松实现,下一行代码将当前页面添加到祖先数组中; 最后使用foreach循环输出所有祖先,循环中的if语句确保最后一个祖先(即添加到数组中的当前页面)没有链接。

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:武汉网络推广 https://www.feimao666.com

上一篇:python学习 面向对象编程 下一篇:最后一页