在浏览网站的时候,很多网站都提供了页面定位的功能,一般在文章的上方以这样的形式显示:
首页 >> 分类 >> 子分类 >> „ >> 阅读正文
那如何在wordpress中实现这样一个功能呢?当然很多主题已经提供了这样一个功能。如果你使用的主题没有提供这样一个功能,或者你想做带有这种位置提示功能的主题,不妨参考DDBug今天为你提供的方法,或许对你有用。
两个函数
首先介绍一下需要用到wp函数:get_the_category和get_category_parents get_the_category的作用是获取文章的所属分类列表(如果属于多个分类的话),返回一个分类数组,函数原型如下: get_the_category( $id = false )
参数$id是文章的post id,默认为当前文章的post id(用于Loop循环中)。 get_category_parents的作用是获取指定分类id的所有父级分类,函数原型如下:
get_category_parents( $id, $link = false, $separator = ‘/’, $nicename = false, $visited = array() )
其中第一个参数$id是必须的,需要传入分类ID(category id),其它几个参数为可选,简单说明一下:
第二个参数$link标识是否需要超级链接,如果为true,返回的分类都带有链接,点击后显示分类下的所有文章;如果为false,返回的分类不带链接,不可点击。默认为false,不过这里为了达到我们想要的效果,需要把它设置为true。 第三个参数$separator是分类之间的分隔符,默认是“/”,你可以把它改成“>>”或者其它样式(可以通过CSS定义更多高级的样式)。
第四个参数$nicename标识是否显示分类别名,默认为false,即不显示别名(显示分类的实现名称)。如果你想显示分类别名,需要把它设置为true。一般我们都是显示分类的实际名称,所以这里用默认即可。
第五个参数$visited是一个数组,保存已经遍历的分类,$visited数组中的分类不会被再次遍历。这里我们不需要传入这个参数。
如果你想进一步了解get_the_category和get_category_parents,可以参看它们的源代码:wp-includes\category-template.php
实现方法
对这两个函数有了基本的了解之后,实现定位文章位置的功能就很简单了: 在你的模板文件夹下找到single.php文件,用文本编辑器打开,先找到Loop循环的位置,一般以下面这段代码开始
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
然后在其后的适当位置(一般在标题之前,当然你也可放在任何你想放的位置)中加入如下代码
<p>当前位置: <a href=”http://domety.com/” title=”首页”>首页</a>>><?php $categorys = get_the_category(); $category = $categorys[0];echo(get_category_parents($category->term_id,true,’>>’)); ?> 阅读正文</p>
这样就实现了我们想要的效果。不过这里有个问题需要注意:在你写文章的时候,最好把文章只归为一个单独的分类中,因为这段代码会自动查找该分类的父 级分类。如果你把文章归为不同的类别下面,这个方法也只显示其中的一个分类路径(正如代码中的$category=$categorys[0])。比如我 把这篇文章归类到wordpress下,就不必再选择wordpress的父级分类“程序开发”了。
评论(0)