在 WordPress 文章页显示当前位置

经过测试,我推荐另一个显示WordPress当前位置的方法,因为以下的方法只适合用于单独文章页面,当你使用二级分类时,会出现进入一级分类页面显示出某个二级分类的错误。我错了,两种方法都对一级目录都显示不正确(如果有二级目录的话)。

很多WordPress也提供了此功能,如果你的主题没有,不妨自己动手试试。

两个函数

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,返回的分类都带有链接,点击后显示分类下的所有文章。
第三个参数 $separator 是分类之间的分隔符,默认是“/”,你可以把它改成“>>”或者其它样式。
第四个参数 $nicename 标识是否显示分类别名,默认为 false,即不显示别名。
第五个参数 $visited 是一个数组,保存已经遍历的分类,$visited 数组中的分类不会被再次遍历。这里我们不需要传入这个参数。

如果你想进一步了解 get_the_category 和 get_category_parents,可以参看它们的源代码:wp-includescategory-template.php

实现方法

编辑模板 single.php 文件,找到下列代码:

<?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>

这里有个问题需要注意:在你写文章的时候,最好把文章只归为一个单独的分类中,因为这段代码会自动查找该分类的父级分类。如果你把文章归为不同的类别下面,这个方法也只显示其中的一个分类路径。